博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构(python) —— 【24: 链表】
阅读量:3943 次
发布时间:2019-05-24

本文共 1327 字,大约阅读时间需要 4 分钟。

链表

1. 单链表

链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。

创建链表:

  • 头插法: 新插入的节点变为头节点
  • 尾插法: 新插入的节点变为尾节点

单链表节点的插入和删除:

插入:
单链表节点的插入删除:
单链表节点的删除

2. 双链表

双链表的每个节点有两个指针: 一个指向后一个节点,另一个指向前一个节点。

双链表节点的插入与删除:
插入:
双链表节点的插入
删除:
双链表节点的删除

3. 单链表代码:

'''TOPIC: 链表author: Bluetime: 2020-08-12QQ: 2458682080'''# 创建一个节点类class Node:    def __init__(self, item):        self.item = item        self.next = Nonea = Node(1)b = Node(2)c = Node(3)a.next = bb.next = cprint(a.next.next.item)

结果:

3

头插法:

# 头插法def creat_linklist_head(li):    head = Node(li[0])    for element in li[1:]:        node = Node(element)        node.next = head        head = node    return head# 打印链表的函数def print_linklist(lk):    while lk:        print(lk.item, end=',')        lk = lk.nextlk = creat_linklist_head([1, 2, 3])print_linklist(lk)

结果为:

3,2,1,

尾插法:

# 尾插法def creat_linklist_tail(li):    head = Node(li[0])    tail = head    for element in li[1:]:        node = Node(element)        tail.next = node        tail = node    return head# 打印链表的函数def print_linklist(lk):    while lk:        print(lk.item, end=',')        lk = lk.nextlk = creat_linklist_tail([1, 2, 3, 4, 5])print_linklist(lk)

结果为:

1,2,3,4,5,

4. 复杂度分析

具体操作 顺序表(列表/数组) 链表
按元素查找 O(n) O(n)
按下标查找 O(1) O(n)
在某元素后插入 O(n) O(1)
删除某元素 O(n) O(1)

5. 总结

  1. 链表在插入和删除的操作上明显快于顺序表
  2. 链表的内存可以更灵活的分配

可以试利用链表重新实现栈和队列,链表这种链式存储的数据结构对树和图的结构有很大的启发性。

转载地址:http://ibiwi.baihongyu.com/

你可能感兴趣的文章
sys/time.h 和 time.h的区别
查看>>
1、蓝牙概述
查看>>
2 系统架构师 - 知识框架
查看>>
Linux下 socket-tcp通信
查看>>
小米笔记本解决风扇异响
查看>>
Linux下 socket-udp通信
查看>>
Linux - 守护进程-1
查看>>
syslog 和 rsyslog
查看>>
Linux下,write/read,recv/send, recvfrom/sendto的区别
查看>>
ubuntu下 rc.local的脚本不运行
查看>>
Linux下简单Makefile文件的编写
查看>>
linux下配置JDK JAVA环境
查看>>
解决Ubuntu 14.04 grub选择启动项10秒等待时间
查看>>
Python函数操作集锦之字符串测试、判断函数
查看>>
Python字符串操作集锦之字符串映射表
查看>>
Python字符串操作集锦之字符串编码解码函数
查看>>
Python字符串类型转换函数
查看>>
Python有用的命令
查看>>
Python条件语句
查看>>
Python eval()函数
查看>>