學習python過程之了解單鏈表:
單鏈表是鏈表中最簡單的一種形式,其每個節點包含2個域,一個信息域(當前節點的元素),一個連接域(指向鏈表的下一個節點),最后一個節點的鏈接域指向一個空值None
以下是學習視頻后進行練習記錄:
參考視頻地址:https://www.bilibili.com/video/BV18W411T7Vv?p=15
#coding:UTF-8
#定義一個節點,節點存在當前節點的值和指向下一個節點的內存空間
class Node(object):
def __init__(self,item):
self.item=item
self.next=None
#定義一個鏈表
class LinkListNode(object):
#定義一個私有變量指向頭節點
def __init__(self,Node=None):
self.__head=Node
#鏈表的操作
def is_empty(self):
#鏈表是否為空
return self.__head==None
def length(self):
#鏈表長度
count=0
cur=self.__head
while cur!=None:
count+=1
cur=cur.next
return count
def travel(self):
#遍歷整個鏈表
cur=self.__head
while cur!=None:
print(cur.item,end=' ')
cur=cur.next
print('\t')
def add(self,item):
#鏈表頭部添加元素
node=Node(item)
node.next=self.__head
self.__head=node
def append(self,item):
#鏈表尾部添加元素
node=Node(item)
cur=self.__head
if cur==None:
node.next=cur
self.__head=node
else:
while cur.next!=None:
cur=cur.next
node.next=cur.next
cur.next=node
def insert(self,pop,item):
#指定位置添加元素
node=Node(item)
if pop<=0:
self.add(item)
elif pop>(self.length()-1):
self.append(item)
else:
cur=self.__head
count=0
while count<pop-1:
count+=1
cur=cur.next
node.next=cur.next
cur.next=node
def remove(self,item):
#刪除節點
pre=None
cur=self.__head
while cur!=None:
#判斷鏈表不為空
if cur.item==item:
if cur==self.__head:
self.__head=cur.next
cur=cur.next
else:
pre.next=cur.next
cur=cur.next
break #如需循環查找刪除相同參數,可將break改為continue
else:
pre = cur
cur = cur.next
def search(self,item):
#查找節點是否存在
cur=self.__head
while cur!=None:
if cur.item==item:
return True
else:
cur=cur.next
return False
if __name__=="__main__":
ll=LinkListNode()
print(ll.is_empty())
print(ll.length())
ll.append(1)
print(ll.is_empty())
print(ll.length())
ll.append(2)
ll.append(3)
ll.add(9)
ll.append(8)
ll.travel()
ll.add(1)
ll.travel()
ll.insert(1,6)
ll.append(1)
ll.travel()
ll.remove(1)
ll.travel()
print(ll.search(10))
輸出: