链表是节点的集合,节点中储存着数据并链接到其它的节点。通过这种方式,节点可以位于内存中的任何位置,不用像数组一样在计算机内存中以相同的距离间隔开。链表中的每个节点都储存着链表中其它节点的地址,很容易从一个节点到达另一个节点。
如果一个节点将指向另一个节点的指针作为数据成员,那么多个这样的节点连接起来,由第一个节点就能访问整个节点序列。这种节点序列是最常用的链表实现方法。如果链表中只包含指向后继节点的链接,该链表就称为单向链表。如下图所示
单链表所具备的操作
开头设置一个head节点,始终指向第一个节点每个节点类应该包含data 储存信息,next 指向下一个节点的地址判断链表的长度将元素添加到链表中删除表中的元素判断一个表是不是空的给定元素,查找其在链表中的位置单链表的python实现
class node: """ 创建链表的节点 包含data储存的数据和next指向下一个节点 """ def __init__(self, data, pnext = None): self.data = data self.next = pnext class LList: """ 链表类 包含 插入、删除、查找 等操作 """ def __init__(self, data = None): #这里可以列表初始化链表哦 self.head = None self.length = 0 if data : p = node(data) self.head = p self.length += 1 def isEmpty(self): return self.length == 0 def Append(self, data): #感兴趣的小伙伴们可以思考一下如何通过索引插入 if not self.head: self.head = node(data) else: p = self.head while p.next: p = p.next p.next = node(data) self.length += 1 def delete(self, index): if index < 0 or index > self.length: print("Out of Index!") return False if index == 0: self.head = self.head.next self.length -= 1 return True i, p = 0, self.head while i+1 < index: i = i + 1 p = p.next p = p.next.next self.length -= 1 def find(self, data): p = self.head i = 1 while p != None and p.data != data : p = p.next i = i+1 if p == None : return -1 else : return i def Print(self): p = self.head while p: print(p.data) p = p.next以上就是关于链表的全部内容了,其实还可以自定义很多操作,小伙伴们赶紧动起手来
欢迎关注公众号:数学算法实验室 专注于 算法、数学、机器学习