备战蓝桥杯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
相关推荐
西猫雷婶几秒前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv
yuanManGan10 分钟前
数据结构漫游记:静态链表的实现(CPP)
数据结构·链表
老刘莱国瑞34 分钟前
STM32 与 AS608 指纹模块的调试与应用
python·物联网·阿里云
火星机器人life1 小时前
基于ceres优化的3d激光雷达开源算法
算法·3d
虽千万人 吾往矣1 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
一只敲代码的猪1 小时前
Llama 3 模型系列解析(一)
大数据·python·llama
Hello_WOAIAI2 小时前
批量将 Word 文件转换为 HTML:Python 实现指南
python·html·word
winfredzhang2 小时前
使用Python开发PPT图片提取与九宫格合并工具
python·powerpoint·提取·九宫格·照片
arnold662 小时前
华为OD E卷(100分)34-转盘寿司
算法·华为od
矩阵推荐官hy147622 小时前
短视频矩阵系统种类繁多,应该如何对比选择?
人工智能·python·矩阵·流量运营