当前位置:   article > 正文

Python链表基础知识_python链表的基本操作

python链表的基本操作

目录

链表定义 

链表的基本操作 

1.链表的结构定义 

2.求线性链表的长度

3.查找元素

4.插入元素

5.改变元素 

6. 删除元素 


链表定义 

链表(Linked List):一种线性表数据结构。它使用一组任意的存储单元(可以是连续的,也可以是不连续的),来存储一组具有相同类型的数据。

链表的基本操作 

数据结构的操作一般涉及到增、删、改、查 4 种情况,链表的操作也基本上是这 4 种情况。

1.链表的结构定义 

链表是由链节点通过 next 链接而构成的,所以先来定义一个简单的链节点类,即 ListNode 类。ListNode 类使用成员变量 val 表示数据元素的值,使用指针变量 next 表示后继指针。

然后再定义链表类,即 LinkedList 类。ListkedList 类中只有一个链节点变量 head 用来表示链表的头节点。

我们在创建空链表时,只需要把相应的链表头节点变量设置为空链接即可。在 Python 里可以将其设置为 None:

  1. # 链节点类
  2. class ListNode:
  3. def __init__(self, val=0, next=None):
  4. self.val = val
  5. self.next = next
  6. # 链表类
  7. class LinkedList:
  8. def __init__(self):
  9. self.head = None
'
运行

 2.求线性链表的长度

求线性链表的长度操作只需要使用一个可以顺着链表指针移动的指针变量 cur 和一个计数器 count。具体做法如下:

  1. 让指针变量 cur 指向链表的第 1 个链节点。
  2. 然后顺着链节点的 next 指针遍历链表,指针变量 cur 每指向一个链节点,计数器就做一次计数。
  3. 等 cur 指向为空时结束遍历,此时计数器的数值就是链表的长度,将其返回即可。
  1. # 获取链表长度
  2. def length(self):
  3. count = 0
  4. cur = self.head
  5. while cur:
  6. count += 1
  7. cur = cur.next
  8. return count
'
运行

3.查找元素

在链表中查找值为 val 的位置:链表不能像数组那样进行随机访问,只能从头节点 head 开始,沿着链表一个一个节点逐一进行查找。如果查找成功,返回被查找节点的地址。否则返回 None

  1. # 查找元素
  2. def find(self, val):
  3. cur = self.head
  4. while cur:
  5. if val == cur.val:
  6. return cur
  7. cur = cur.next
  8. return None
'
运行

 4.插入元素

三种:

  1. # 头部插入元素
  2. def insertFront(self, val):
  3. node = ListNode(val)
  4. node.next = self.head
  5. self.head = node
  6. # 尾部插入元素
  7. def insertRear(self, val):
  8. node = ListNode(val)
  9. cur = self.head
  10. while cur.next:
  11. cur = cur.next
  12. cur.next = node
  13. # 中间插入元素
  14. def insertInside(self, index, val):
  15. count = 0
  16. cur = self.head
  17. while cur and count < index - 1:
  18. count += 1
  19. cur = cur.next
  20. if not cur:
  21. return 'Error'
  22. node = ListNode(val)
  23. node.next = cur.next
  24. cur.next = node
'
运行

 5.改变元素 

将链表中第 i 个元素值改为 val:首先要先遍历到第 i 个链节点,然后直接更改第 i 个链节点的元素值。

  1. # 改变元素
  2. def change(self, index, val):
  3. count = 0
  4. cur = self.head
  5. while cur and count < index:
  6. count += 1
  7. cur = cur.next
  8. if not cur:
  9. return 'Error'
  10. cur.val = val
'
运行

6. 删除元素 

三种:

  1. # 链表头部删除元素
  2. def removeFront(self):
  3. if self.head:
  4. self.head = self.head.next
  5. # 链表尾部删除元素
  6. def removeRear(self):
  7. if not self.head.next:
  8. return 'Error'
  9. cur = self.head
  10. while cur.next.next:
  11. cur = cur.next
  12. cur.next = None
  13. # 链表中间删除元素
  14. def removeInside(self, index):
  15. count = 0
  16. cur = self.head
  17. while cur.next and count < index - 1:
  18. count += 1
  19. cur = cur.next
  20. if not cur:
  21. return 'Error'
  22. del_node = cur.next
  23. cur.next = del_node.next
'
运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/859338
推荐阅读
相关标签
  

闽ICP备14008679号