传统链表是一种由指针相互连接的数据结构
python链表与传统链表不同,在没有指针的情况下,变成一种对象套对象的数据结构,即套娃
图示
基本结构
```class ListNode:
def __init__(self, val=0, next=None):
self.val = val #链表的数据
self.next = none #代替指针存在的连接点,用来套下一个节点
打印效果如下(演示为一个三个节点的链表):
{val:date1,next:{val:date2,next:{val:date3,next:none}}}
创建链表
下面是用列表创建一个链表
```def ListNode_creat(list):
node = ListNode()
node0 = node
for i in range(len(list)-1):
node0.val = int(list[i])
node0.next = ListNode()
node0 = node0.next
node0.val = int(list[-1])
node0.next = None
return node
遍历链表
```def ListNode_ergodic(ListNode):
list = []
while ListNode.next != None:
list.append(ListNode.val)
ListNode = ListNode.next
list.append(ListNode.val)
return list
#这个方法就可以获得链表所有所有数据并储存在一个列表中
获取第n个节点的数据
```def ListNode_get(ListNode,n):
for i in range(n-1):
ListNode = ListNode.next
date = ListNode.val
return date
头插一个节点
```def ListNode_head(date,ListNode):
node = ListNode()
node.val = date
node.next = ListNode
return ListNode
尾插一个节点
``` def ListNode_head(date,ListNode):
while ListNode.next != None:
ListNode = ListNode.next
node = ListNode()
node.val = date
ListNode.next = node
return ListNode
在第n个节点后插入节点
```def ListNode_insert(n,date,ListNode):
node_front = ListNode
node_behind = ListNode
for i in range(n-1):
node_front =node_front.next
for i in range(n):
node_behind = node_behind.next
new_node = ListNode()
new_node.val = date
new_node.next = node_behind
node_front.next = new_node
return ListNode
删除n个节点
```def ListNode_insert(n,date,ListNode):
node_front = ListNode
node_behind = ListNode
for i in range(n-2):
node_front =node_front.next
for i in range(n):
node_behind = node_behind.next
node_front.next = node_behind
return ListNode
合并两个链表
```def ListNode_head(ListNode1,ListNode2):
node = ListNode1.next
while node.next != None:
node = node.next
node.next = ListNode2
return ListNode2