日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python链表怎么定义_链表初介绍以及python实现

發布時間:2023/12/29 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python链表怎么定义_链表初介绍以及python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、鏈表定義

鏈表由表頭和節點組成,節點分為數據域和指針域,數據域中存貯數據元素,指針域存儲下個結點的地址。鏈表一般分為單鏈表和雙鏈表。

二、單鏈表的實現創建節點類Node和鏈表類Linklist,Linklist類中包含head屬性,head的值為0或Node對象,Node類中包含value屬性存儲數據,next屬性存儲下個節點的地址(Node對象)。

循環節點從head開始取next屬性,直到next=0為止,返回當前對象。

添加節點時調用循環方法返回最后一個節點對象,把返回節點的next改為當前Node對象,如當前沒有節點,則Linklist實例的head屬性修改為當前Node對象

刪除節點時把前一個節點的next屬性修改為后一個節點的Node對象,如果當前節點是最后一個對象

'''

__author__ Koala

__function__ 單鏈表

__time__ 2020.03.02

'''

class Node:

def __init__(self,vale,node=0):

self.value = value

self.next = node

class LinkList:

def def __init__(self,value=0,*args):

self.lenth = 0

#創建表頭head

self.head = 0 if value ==0 else Node(vale)

#如果初始化實例時傳入多個參數,循環加入鏈表

p = self.head

for i in [*args]:

node = Node(i)

p.next = node

p = p.next

def append(self,value):

if self.head == 0:

self.head == Node(value)

else:

self.iternodes().next = Node(value)

def iternodes(self):

p = self.head

while p:

print(p,value)

if not p.next:

return p

p = p.next

##首先定義節點類Node

class Node:

'''

data: 節點保存的數據

_next: 保存下一個節點對象

'''

def __init__(self,data,pnext=None):

self.data = data

self._next = pnext

def __repr__(self):

'''

用來定義Node的字符輸出

print 為輸出data

'''

return str(self.data)

##定義鏈表類

class ChainTable:

def __init__(self):

self.head = Node

self.length = 0

def isEmpty(self):

return (self.length == 0)

def append(self,dataOrNode):

item = None

if isinstance(dataOrNode,Node):

item = dataOrNode

else:

item = Node(dataOrNode)

if not self.head:

self.head = item

self.length += 1

else:

node = self.head

while node._next:

node = node._next

node._next = item

self.length += 1

##首先定義節點類Node

class Node(object):

'''

data: 節點保存的數據

_next: 保存下一個節點對象

'''

def __init__(self,data,pnext=None):

self.data = data

self.next = pnext

##實例化對象

node1 = Node(1,None)

node2 = Node(2,node1)

node3 = Node(3,node2)

print(node2.next) ##輸出node1的地址

print(node1) ##輸出node1的地址

##首先定義節點類Node

class SingleNode(object):

#單鏈表結點

def __init__(self,item):

#item存放數據

self.item = item

self.next = None

#單鏈表實現

class SingleLinkList(object):

def __init__(self):

self._head = None

def is_empty(self):

return self._head == None

def length(self):

#cur初始時指向頭結點

cur = self._head

count = 0

#尾結點指向None

while cur != None:

count += 1

cur = cur.next

return count

def travel(self):

cur = self._head

while cur != None:

print(cur.item)

cur = cur.next

#頭部添加元素

def add(self,item):

#創建一個保存item值的節點

node = SingleNode(item)

#將新節點的鏈接域指向頭節點,

node.next = self._head

#將鏈表頭節點指向新節點

self._head = node

#尾部添加元素

def append(self,item):

node = SingleNode(item)

#先判斷鏈表是否為空,若為空鏈表,則將_head指向新節點

if self.is_empty():

self._head = node

#若不為空,則找到尾部,將尾部節點的next指向新節點

else:

cur = self._head

while cur.next != None:

cur = cur.next

cur.next = node

#指定位置添加元素

def insert(self,pos,item):

#若指定位置pos為第一個元素之前,則執行頭部插入

if pos <= 0:

self.add(item)

#若指定位置超出鏈表尾部,則執行尾部插入

elif pos > (self.length()-1):

self.append(item)

#找到指定位置

else:

node = SingleNode(item)

count = 0

#pre 用來指向指定位置pos的前一個位置pos-1,

pre = self._head

while count < (pos-1):

pre = pre.next

count += 1

#先將新節點node的next指向插入位置的節點

node.next = pre.next

#將插入位置的前一個節點的next指向新節點

pre.next = node

#刪除節點

def remove(self,item):

cur = self._head

pre = None

while cur != None:

#找到指定元素

if cur.item == item:

#如果第一個就是刪除節點

if not pre:

self._head = cur.next

else:

pre.next = cur.next

else:

pre = cur

cur = cur.next

#檢查節點是否存在

def search(self,item):

cur = self._head

while cur != None:

if cur.item == item:

return True

cur = cur.next

return False

#測試

if __name__ == '__main__':

l1 = SingleLinkList()

l1.add(1)

l1.add(2)

l1.append(3)

l1.append(3)

總結

以上是生活随笔為你收集整理的python链表怎么定义_链表初介绍以及python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。