python 单链表的操作
生活随笔
收集整理的這篇文章主要介紹了
python 单链表的操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
鏈表由一系列不必在內(nèi)存中相連的結(jié)構(gòu)構(gòu)成,這些對象按線性順序排序。每個結(jié)構(gòu)含有表元素和指向后繼元素的指針。最后一個單元的指針指向NULL。為了方便鏈表的刪除與插入操作,可以為鏈表添加一個表頭。
單鏈表 雙鏈表?
鏈表的常用方法:
python方法實(shí)現(xiàn):
class Node(object):def __init__(self, data, next = None):self.data = dataself.next = nextclass Singlelinklist(object):#創(chuàng)建空鏈表def __init__(self):self.head = Noneself.tail = None#測試是否為空def isempty(self):return(self.head is None)#尾部增加元素def append(self, data):node = Node(data)if self.head is None:self.head = nodeself.tail = nodeelse:self.tail.next = nodeself.tail = node#刪除一個元素def remove(self, index):if self.head is None: #empty listprint('The linklist is empty!')returntemp = self.headtemp_idx = 0while temp_idx < index - 1:temp = temp.nextif temp is None:print('List length less than index!')returntemp_idx += 1if self.head is self.tail: #list only have one nodeself.head = Noneself.tail = Nonereturnif index == 0: #remove the first nodeself.head = temp.nextreturnif temp.next is None: #remove the last nodeself.tail = temptemp.next = temp.next.next#遍歷鏈表def iter(self):if not self.head:returntemp = self.headprint(temp.data)while temp.next:temp = temp.nextprint(temp.data)#插入一個元素def insert(self, index, value):if self.head is None:print('The list is empty!')returntemp = self.headtemp_idx = 0while temp_idx < index - 1:temp = temp.nexttemp_idx += 1node = Node(value)node.next = temp.nexttemp.next = nodeif node.next is None:self.tail = node#獲取元素數(shù)def size(self):if self.head is None:print('The list is empty!')returntemp = self.headcount = 0while temp is not None:count += 1temp = temp.nextreturn count#查找一個元素def search(self, item):found = Falsetemp = self.headwhile temp is not None and not found:if temp.data == item:found = Trueelse:temp = temp.nextreturn foundif __name__ == '__main__':link = Singlelinklist()link.append(3)link.append(5)link.append(6)link.insert(1, 4)link.iter()link.remove(1)print(link.size())print(link.search(3))?
總結(jié)
以上是生活随笔為你收集整理的python 单链表的操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存64的手机够用吗(内存科普内存的参数
- 下一篇: 传送门骑士职业有哪些