数据结构之单链表及python实现

xiaoxiao2021-02-28  103

      线性表的链式存储又称为单链表,特色指通过一组任意存储单元来存储线性表种的数据元素,为数据元素之间建立起线性关系。每个元素间逻辑上相邻,物理位置不相邻。

      链式存储优点在于插入删除,缺点查找速度慢,以下是链式表的python实现:

#coding:utf-8 ''' author:xzfreewind ''' class Node(object): def __init__(self,val,p=0): self.value = val self.next = p class linlList(object): def __init__(self): self.head = 0 #将数组初始化成链表 def initlist(self,list): self.head = Node(list[0]) p = self.head for i in list[1:]: node = Node(i) p.next = node p = p.next #获取链表长度 def getLength(self): length = 0 p = self.head while p != 0: length += 1 p = p.next return length #链表是否为空 def isEmpty(self): if self.getLength() == 0: return True else: return False #在链表尾部增加元素 def push(self,value): if self.head == 0: self.head = Node(value) else: p = self.head while p.next != 0: p = p.next p.next = Node(value) #删除链表尾部元素 def pop(self): p = self.head q = p.next while p.next != 0: q = p p = p.next q.next = 0 #指定位置插入链表.. def insert(self,index,value): if self.getLength() < index: #如果index大于链表长度,则返回IndexError raise IndexError elif self.getLength() == index: #如果index等于链表长度,则添加至表尾 self.push(value) else: p = self.head length = 0 while length < index: length += 1 q = p p = p.next node = Node(value) q.next = node node.next = p #删除链表指定位置元素 def delete(self,index): if self.getLength() <= index: raise IndexError elif self.getLength() == index-1: self.pop() else: p = self.head length = 0 if index == 0: self.head = p.next else: while length < index: length += 1 q = p p = p.next q.next = p.next #获取指定位置链表 def getitem(self,index): length = 0 if self.getLength() <= index: #如果index大于链表长度,则返回IndexError raise IndexError else: p = self.head while length < index: length += 1 p = p.next return p.value #输出链表 def outLinklist(self): p = self.head while p != 0: print p.value p = p.next #清空链表 def clear(self): self.head = 0

转载请注明原文地址: https://www.6miu.com/read-41117.html

最新回复(0)