备战蓝桥杯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
相关推荐
木子.李34712 分钟前
排序算法总结(C++)
c++·算法·排序算法
风逸hhh15 分钟前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮39 分钟前
Python训练第四十三天
开发语言·python
闪电麦坤951 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
互联网杂货铺2 小时前
完美搭建appium自动化环境
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
小熊猫写算法er2 小时前
终极数据结构详解:从理论到实践
数据结构
Gyoku Mint2 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
纪元A梦2 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法
莱茵菜苗2 小时前
Python打卡训练营day46——2025.06.06
开发语言·python
爱学习的小道长2 小时前
Python 构建法律DeepSeek RAG
开发语言·python