链表(Linked List)是数据结构中很重要的一个部分,链表是一个最简单的动态数据结构。
1.定义一个链表
class IntList:
def __init__(self):
self.first=None
self.rest=None
l1=IntList()
l2=IntList()
L3=Intlist()
l1.first=1 #首先,给每个链表赋值
l2.first=2
l3.first=3
l1.rest=l2 #然后把每个链表连接起来
l2.rest=l1
2.上面操作是不是太麻烦了呢,我们来看看下面的
class IntList:
def __init__(self,f,r):
self.first=f
self.rest=r
l=IntList(1,None)
l=IntList(2,l)
l=IntList(3,l)#注意,这样链表储存的数据顺序是反的!
3.我们怎么知道这个链表的长度呢?不妨定义一个size()函数来测量一下它
链表的遍历(测量)
size()
def size(self):
p=self
num=0
while p is not None:
num=num+1
p=p.rest
return num
4.接下来查询一下每个数据
链表的查询
get()
def get(self,i):
q=self
j=1
while q is not None and j<i:
q=q.rest
j=j+1
return q.first
5.定义链表方式的改进
class IntNode:
def __init__(self,i,n):
self.item=i
self.next=n
class SLList:
def __init__(self,x):
self.first=IntNode(x,None)
6.添加元素的改进(表头)
add_first
def add_first(self,x):#给链表开头位置添加元素
self.first = IntNode(x,self.first)
7.添加元素的改进(表尾)#这样你的顺序就是正的
def add_last(self,x):
p = self.first
while p.next is not None:
p = p.next
p.next = IntNode(x,None)
8.查找元素的改进
def new_find(self,x):
j=1
q=self.first
while j<x and q.next is not None:
q=q.next
print(q.item)
9.上面一些代码合起来
class IntNode:
def __init__(self,i,n):
self.item=i
self.next=n
class SLList:
def __init__(self,x):
self.first=IntNode(x,None)
def add_first(self,x):
self.first=IntNode(x,self.first)
def new_find(self,x):
j=1
q=self.first
while j<x and q.next is not None:
q=q.next
print(q.item)
def add_last(self,x):
p = self.first
while p.next is not None:
p = p.next
p.next = IntNode(x,None)
L=SLList(1)
L.add_first(2)
L.add_first(3)
L.new_find(1)
L.add_last(8)
L.new_find(4)