备战蓝桥杯Day18 - 双链表

一、每日一题

蓝桥杯真题之工作时长

这个题写代码做的话很麻烦,而且我也不一定能写出来,所以我直接就是用的excel来计算的时间和。

使用excel的做法

1.先把文件中的时间复制到excel中。

2.把日期和时间分到两列。

分成两列的步骤:

选中要分列的数据(注意!只能选择一列,多列不可操作),在上面找到数据,再找到分列这个操作。

点进去后选择分隔符号,点击下一步。

只选择空格,不选择其他的,之后点击下一步。

格式可以选择常规,也可以选择日期,没太大影响。

最后点击完成即可。

最后得到的结果,不知道为什么后面会有0:00,但是不影响结果计算,主要是把时间单独分出一列来即可。

3.计算一天中上下班的时间差

在新的一列中这样写出计算公式,并得出结果,往下复制,excel会根据对应的单元格得出相应的数据,复制几个后,可以点右下角的加号向下拉,就能得出两个单元格的的差值,就是一天中上班的时间。

4.计算每天上班时间的和

5.换算成秒

计算出时间总和的时间单位为天,一天24*60*60s = 86400s。最后结果为5101913s。

在蓝桥杯官网提交结果后,运行成功通过。

二、双链表

单链表只可以实现数据不断向前寻找,不可以向后寻找,为了提高效率,从而引出双链表。

双链表的每个节点有两个指针,一个指向后一个节点,一个指向前一个节点,这样既可以向前寻找数据,也可以向后寻找。

双链表的初始化及基本操作。

python 复制代码
class Node:  
    def __init__(self, data=None):  
        self.data = data  
        self.next = None  
        self.prev = None  
  
  
class DoublyLinkedList:  
    def __init__(self):  
        self.head = None  
  
    # 在链表末尾添加节点  
    def append(self, data):  
        if not self.head:  
            self.head = Node(data)  
        else:  
            new_node = Node(data)  
            current = self.head  
            while current.next:  
                current = current.next  
            current.next = new_node  
            new_node.prev = current  
  
    # 在链表开头添加节点  
    def prepend(self, data):  
        new_node = Node(data)  
        new_node.next = self.head  
        if self.head:  
            self.head.prev = new_node  
        self.head = new_node  
  
    # 删除指定数据的节点  
    def delete(self, data):  
        current = self.head  
        if current and current.data == data:  
            self.head = current.next  
            if self.head:  
                self.head.prev = None  
            return  
  
        while current and current.data != data:  
            current = current.next  
  
        if current.next:  
            current.next.prev = current.prev  
        if current.prev:  
            current.prev.next = current.next  
  
    # 打印链表  
    def print_list(self):  
        current = self.head  
        while current:  
            print(current.data, end=' ')  
            current = current.next  
        print()  
  
  
# 示例  
dll = DoublyLinkedList()  
dll.append(1)  
dll.append(2)  
dll.prepend(0)  
dll.print_list()  # 输出: 0 1 2  
dll.delete(1)  
dll.print_list()  # 输出: 0 2
相关推荐
用户8356290780515 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780515 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
vibecoding日记7 小时前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr21389 小时前
Verilog参数化游程编码RLE模块
算法
望易10 小时前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络13 小时前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
你好潘先生13 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师14 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码14 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python