導航:首頁 > 編程語言 > python鏈表翻轉

python鏈表翻轉

發布時間:2022-09-01 20:23:11

1. 關於python鏈表的運行

看你運行幾次,我給你一條一條說

頭 1->2->3->4->5->6->7->8->9 NONE

pointer=head #這里你沒說清,我先假設這個head是鏈表的第一個,1
newnode={ } #空字典
newnode['data']=20 #添加關鍵字data=20進字典。
newnode['next']=pointer #字典的next目標指向pointer,也就是head,也就是1,但是是鏈表這個object,不是指向一個數字
head=newnode #重新定義head為newnode這個字典。head指向{『data』:20, 『next』:pointer}這個字典。
pointer=pointer['next'] #pointer指向pointer['next'],也就是pointer現在指向鏈表的第二個,2
pointer['next']=none #pointer['next']設為none,也就是現在pointer這個鏈表就被截斷了。只包含1->2->none

2. python有鏈表嗎

python中的鏈表(linked list)是一組數據項的集合,其中每個數據項都是一個節點的一部分,每個節點還包含指向下一個節點的鏈接。鏈表有兩種類型:單鏈表和雙鏈表。
鏈表的數據結構
在鏈表中刪除操作可以通過修改指針來實現,
插入則是調整,插入點的前後兩個指針的指向關系,
在python中每個變數都是指針,例如:

用內置數據結構(list,dict,tuple等)的嵌套/組合,它們隱式地包含了指向/嵌套關系,如graph[u][v]={w0,w1..}類的成員變數、嵌套類可能包含了指向/嵌套關系;
引用表示指向關系,只不過引用不能像指針一樣運算,比如p+1指向下一個元素,所以可能限制頗多。因此,要實現鏈表的操作,不能和c一樣直接對指針進行操作。
python學習網,大量的免費python視頻教程,歡迎在線學習!

3. Python 迭代反轉一個List, 要求 Space O(1).

給你思路,用一個while循環,裡面有兩個指針i和j i指向0位 j指向最後一位。 循環體每次交換list[i]和list[j],這里交換只需要一個變數(其實以Python語法甚至可以不用聲明中間變數) 交換完了i加1 j減1,直到i和j相等就退出循環。

4. 給個鏈表,翻轉相鄰的節點,即0和1翻轉,2和3翻轉,用python

#Definitionforsingly-linkedlist.
#classListNode(object):
#def__init__(self,x):
#self.val=x
#self.next=None

classSolution(object):
defswapPairs(self,head):
"""
:typehead:ListNode
:rtype:ListNode
"""
ifhead==None:
returnNone;
ifhead.next==None:#只有一個節點的情況
returnhead;
node=head;
result=head.next;#交換之後鏈表的頭節點
whilenodeandnode.next:#還存在下一對節點
temp=node.next;#作節點交換處理
node.next=temp.next;
temp.next=node;
temp=node.next;
iftempandtemp.next:#如果下對節點有兩個的話,當前這對節點第二個節點指向下對節點的第二個節點
node.next=temp.next;
node=temp;
returnresult;

5. 如何在Python中反轉列表的一部分

>>> a=[1,2,3,4,5,6,7,8,9]
>>> a[2:5]=a[5-1:2-1:-1]
>>> a
[1, 2, 5, 4, 3, 6, 7, 8, 9]

6. python 如何實現反轉倒序

#1.字元串、列表、元組均可用此方法(使用切片的方法)不修改元素原有內容,將輸出進行賦值
#1.1字元串
s='nihao'
s1=s[::-1]
#1.2列表
lin=["a","b","c"]
print(lin[::-1])
#1.3元組
tup=("e","f","g","h",2,3,6)
print(tup[::-1])

#2.列表獨有方法
lin=["a","b","c"]
lin.reverse()
print(lin)

7. 誰能跟我解釋下python的字元串反轉的原理

[::-1]實現翻轉功能。

Python 的切片功能實際上比很多程序員認為的更強大。
a = m [ 0 : 100 : 10 ] # 帶步進的切片(步進值=10)

注意:步進值為step
當step > 0 時
切片從 start(含start)處開始,到end(不含end)處結束,**從左往右**,每隔(step-1)(索引之間的差仍為step,但相隔的元素是step-1個)個元素進行一次截取。
這時,start 指向的位置應該在end指向的位置的左邊,否則返回值為空

當step < 0 時
切片從 start(含start)處開始,到end(不含end)處結束,**從右往左**,每隔(step-1)(索引之間的差仍為step,但相隔的元素是step-1個)個元素進行一次截取。
這時,start 指向的位置應該在end指向的位置的右邊,否則返回值為空

8. python list里的list元素顛倒位置

Python編程實現list反轉(元素顛倒位置)的方法,代碼如下:

importmath
defresv(li):
new=[]
ifli:
cnt=len(li)
foriinrange(cnt):
new.append(li[cnt-i-1])
returnnew

defresv2(li):
li.reverse()
returnli
defresv3(li):
hcnt=int(math.floor(len(li)/2))
tmp=0
foriinrange(hcnt):
tmp=li[i]
li[i]=li[-(i+1)]
li[-(i+1)]=tmp
returnli

li=[1,2,3,4,5]
printresv(li)

9. python編程中實現linkedlist(鏈表)報錯是因為什麼,怎麼解決

樓主你好!

看你的代碼存在很多問題,一個個來說明

1)首先你代碼的報錯源於你想用list來展開你的SLinkedList類,在python中,除非內置的可迭代對象外,其他都需要實現__iter__()函數,才能用list來進行展開。注意:判斷一個對象是否可迭代,請使用isinstance(obj, Iterable)來判斷obj是不是可以迭代,Iterable需要從collections中導入

2)插入的方法存在嚴重問題,按樓主的方法插入的話,因為頭節點始終在變,所以當你需要遍歷鏈表的時候就會找不到頭節點;

3)pop的方法實現也有問題,因為是單向鏈,所以無法從末節點開始刪除,只能刪除頭節點

4)top方法的意圖未知

其他:

下面列舉了一下我修改後的方案,做了一些錦上添花的操作,每個基本操作都會返回鏈表對象,這樣就可以使用鏈式操作來寫代碼;迭代函數使用yield來實現,避免展開時佔用不必要的內存。

另:我的展開時直接取鏈表中各個節點的元素,加了一些關鍵注釋在代碼中;

#-*-coding:utf-8-*-
classNode:
def__init__(self):
'''
elm:節點元素
nxt:下個節點指針
'''
self.elm,self.nxt=None,None

classSLinkedList:
def__init__(self):
'''
head:鏈表頭
end_point:鏈表尾
'''
self.head=None
self.end_point=None

defpush(self,x):
p=Node()
p.elm=x
ifself.headisNone:
self.head=p
self.end_point=p
returnself
self.end_point.nxt=p
self.end_point=p
returnself

defpop(self):
'''因為實現的是一個單鏈表,所以只能從頭開始刪除節點'''
ifself.head.nxtisNone:
return
self.head=self.head.nxt
returnself

def__iter__(self):
temp_node=self.head
whiletemp_nodeisnotNone:
yieldtemp_node.elm
temp_node=temp_node.nxt


if__name__=='__main__':
'''增加1,2,5三個元素,並刪除一個頭節點'''
mylinklist=SLinkedList().push(1).push(2).push(5).pop()
print(list(mylinklist))


其實python這個語言使用鏈表有些畫蛇添足,但是如果拿來當作需求練手也無妨。

望採納,謝謝!

閱讀全文

與python鏈表翻轉相關的資料

熱點內容
店長的h命令必須服從 瀏覽:93
cad填充命令是什麼 瀏覽:869
java引用類型值類型 瀏覽:239
徐錦江葉子楣方唐鏡 瀏覽:59
可以在線看片的網站 瀏覽:133
小米加密兔手機壁紙 瀏覽:613
2019程序員筆記本 瀏覽:477
武大小孩子厲害的電影有哪些 瀏覽:35
找一個可以看的網址 瀏覽:79
四個字的國外電影,小孩兒 瀏覽:411
推薦看片網站 瀏覽:652
主角叫林飛的小說是什麼 瀏覽:683
閑置伺服器能幹什麼工作 瀏覽:949
asdr q-2299123 瀏覽:987
中國最大尺度古裝電影 瀏覽:695
電影和電視播放器 瀏覽:113
櫻桃小說by小花喵 瀏覽:514
英國看片網站叫什麼名字 瀏覽:676
法蘭克plc編程軟體 瀏覽:359
怎麼看pdf的字體 瀏覽:634