class LinkNode(object):
def __init__(self, data, p = None):
self.data = data
self.next = p
class LinkList(object):
def __init__(self):
self.head = None
#鏈表初始化函數,尾插法,插入data
def initlist_tail(self, data):
#創(chuàng)建頭結點埃难,其實是第一個有值節(jié)點
self.head = LinkNode(data[0])
p = self.head
for i in data[1:]:
#print(i)
node = LinkNode(i)
p.next = node
p = p.next
#判斷鏈表是否為空
def isEmpty(self):
p = self.head
if p.next == None:
print('The LinkList is Empty')
return 1 #感覺是為了方便后續(xù)調用
else:
#print('The LinkList is not Empty')
return 0
#遍歷鏈表并輸出,用','隔開
def ReadList(self):
if self.isEmpty():
exit(0)
p = self.head
while p:
print(p.data, end = ',')
p = p.next
print('')
#取鏈表長度
def getLength(self):
if self.isEmpty():
exit(0)
p = self.head
lenth = 0
while p:
#print(p.data, end = ',')
lenth += 1
p = p.next
print('lenth of the LinkList:', lenth)
return lenth
#在索引值為 index 的結點后插入結點key
def insertElem(self, key, index):
p = self.head
j = 1
while p and j < index:
p = p.next
j += 1
if(p == 0 or j > index): #若出錯則退出
exit(0)
print('insert error')
node = LinkNode(key)
node.next = p.next
p.next = node
print('inserted LinkList:')
self.ReadList()
#刪除第 index個 結點后的那一個節(jié)點
def deleteElem(self, index):
p = self.head
j = 1
while p and j < index:
p = p.next
j += 1
if(p == 0 or j > index): #若出錯則退出
exit(0)
print('insert error')
q = p.next
p.next = q.next
print('deleted LinkList:')
self.ReadList()
#鏈表逆序
def reverseList(self):
pre, next, current = None, None, None
current = self.head
# 當前節(jié)點指向頭節(jié)點
next = current.next
# next 指向當前節(jié)點的下一個節(jié)點叠蝇,即將后面的節(jié)點存儲起來
current.next = None
# 令當前節(jié)點的next 指向None,即設為最后一個節(jié)點
pre = current
# 當前節(jié)點的前一個節(jié)點為當前節(jié)點
current = next
# 當前節(jié)點指向下一個節(jié)點開始下一輪循環(huán)
while current.next != None:
next = current.next
# 存儲后面的鏈表
current.next = pre
# 將原本的前面的鏈表設為后面的
pre = current
current = next
# 遍歷到鏈表最后一個節(jié)點時候铸鹰,將其指向前驅節(jié)點
current.next = pre
# 頭節(jié)點指向原來鏈表的最后一個節(jié)點
self.head = current
data1 = [1, 2, 3, 4, 5]
data2 = [2, 0]
a = LinkList()
a.initlist_tail(data1)
a.reverseList()
a.ReadList() #輸出結果為1,2,3,4,5,
a.getLength() #輸出結果為lenth of the LinkList: 5
a.insertElem(6,3) #輸出結果為1,2,3,6,4,5,
a.deleteElem(3)#1,2,3,4,5,
鏈表--python
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門鳞绕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盾剩,“玉大人出刷,你說我怎么就攤上這事瘾腰〉瘢” “怎么了舒憾?”我有些...
- 正文 為了忘掉前任探遵,我火速辦了婚禮,結果婚禮上妓柜,老公的妹妹穿的比我還像新娘箱季。我一直安慰自己,他們只是感情好棍掐,可當我...
- 文/花漫 我一把揭開白布藏雏。 她就那樣靜靜地躺著,像睡著了一般作煌。 火紅的嫁衣襯著肌膚如雪掘殴。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼套菜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了设易?” 一聲冷哼從身側響起逗柴,我...
- 正文 年R本政府宣布,位于F島的核電站辫诅,受9級特大地震影響凭戴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜炕矮,卻給世界環(huán)境...
- 文/蒙蒙 一么夫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肤视,春花似錦档痪、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至困后,卻和暖如春乐纸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背操灿。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 1.題目描述 編寫一個程序秩冈,找到兩個單鏈表相交的起始節(jié)點本缠。 如下面的兩個鏈表:在節(jié)點 c1 開始相交。 示例 1:...
- 數據結構在編程世界中一直是非常重要的一環(huán)丹锹,不管是開發(fā)還是算法稀颁,哪怕是單純?yōu)榱嗣嬖嚕瑪祿Y構都是必修課楣黍,今天我們介紹...