溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

python中鏈表指的是什么

發(fā)布時(shí)間:2020-08-05 14:33:11 來(lái)源:億速云 閱讀:214 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了python中鏈表指的是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)必須掌握的一門(mén)學(xué)問(wèn),很多的教材都是用C語(yǔ)言實(shí)現(xiàn)鏈表,因?yàn)镃有指針,可以很方便的控制內(nèi)存,很方便就實(shí)現(xiàn)鏈表,其他的語(yǔ)言,則沒(méi)那么方便,有很多都是用模擬鏈表,因?yàn)閜ython是動(dòng)態(tài)語(yǔ)言,可以直接把對(duì)象賦值給新的變量。在C/C++中,通常采用“指針+結(jié)構(gòu)體”來(lái)實(shí)現(xiàn)鏈表;而在Python中,則可以采用“引用+類(lèi)”來(lái)實(shí)現(xiàn)鏈表。

鏈表的定義:是一組數(shù)據(jù)項(xiàng)的集合,其中每個(gè)數(shù)據(jù)項(xiàng)都是一個(gè)節(jié)點(diǎn)的一部分,每個(gè)節(jié)點(diǎn)還包含指向下一個(gè)節(jié)點(diǎn)的鏈接

鏈表的結(jié)構(gòu):data為自定義的數(shù)據(jù),next為下一個(gè)節(jié)點(diǎn)的地址。

python中鏈表指的是什么

python中鏈表指的是什么

基本元素:

節(jié)點(diǎn):每個(gè)節(jié)點(diǎn)有兩個(gè)部分,左邊部分稱(chēng)為值域,用來(lái)存放用戶(hù)數(shù)據(jù);右邊部分稱(chēng)為指針域,用來(lái)存放指向下一個(gè)元素的指針。

head:head節(jié)點(diǎn)永遠(yuǎn)指向第一個(gè)節(jié)點(diǎn);

tail:tail永遠(yuǎn)指向最后一個(gè)節(jié)點(diǎn);

None:鏈表中最后一個(gè)節(jié)點(diǎn)的指針域?yàn)镹one值;

鏈表種類(lèi):單向鏈表、單向循環(huán)鏈表、雙向鏈表、雙向循環(huán)鏈表。

python中鏈表指的是什么

在C語(yǔ)言中,我們定義插入、刪除靠得是指針來(lái)實(shí)現(xiàn)。

//c語(yǔ)言的代碼 關(guān)于鏈表排序的代碼
//解釋下我的思路,鏈表排序,理論上是數(shù)字在變換,但是我們要用鏈表來(lái)控制數(shù)字變化比較
//用的算法依然是,冒泡法,和正常排序沒(méi)什么區(qū)別。
//等效與數(shù)組,這兒只不過(guò)是用指針來(lái)確定data位置
 
viod sort()
{
int i,j;
int temp;
int len=length_list(pHead);//
PNODE p,q;//定義指針
 
////利用冒泡排序,指針在移動(dòng),數(shù)字在交換,
 
for (i=0,p=pHead->pNext ; i<len-1 ; i++,p=p->pNext)///初始的指針p是在第一個(gè)元素上
{
for(j=i+1,q=p->pNext ; j<len ; j++,q=q->pNext)
{
//數(shù)字交換
if(p->data > q->data)
{
temp = p->data;
p->data = q->data;
q->data = temp;
}
}
}
}

但是python中沒(méi)有指針,實(shí)現(xiàn)插入、刪除、替換要怎么去做??

python代碼的實(shí)現(xiàn),我們用引用+類(lèi)來(lái)實(shí)現(xiàn)。

反轉(zhuǎn)鏈表

python中鏈表指的是什么

怎么來(lái)好理解呢?看圖也是花了半個(gè)小時(shí)才理解透徹。

具體翻轉(zhuǎn)思路是,定義一個(gè)空的頭指針 pre,然后把head往后移,使鏈表裂開(kāi)重組。

tmp = pHead.next

pHead = tmp %%%這兩行代碼的意思是,把頭指針往后移一個(gè),移到下一個(gè)數(shù)上。

pHead.next = pre

pre = pHead %%%這倆句的意思,我的pre開(kāi)始指向none ,現(xiàn)在none給了pHead.next,所以數(shù)據(jù)1就裂開(kāi)了,然后再把數(shù)字1頭指針值賦值給pre,這樣就得到單獨(dú)數(shù)字1的值。然后把原pHead向后移。重復(fù)幾次,就可以反轉(zhuǎn)我們的鏈表了。

代碼的順序要考慮,我們是先要保存pHead.next,然后在把數(shù)字1裂開(kāi),在把pHead移向數(shù)字2。

附上4張圖:

python中鏈表指的是什么

python中鏈表指的是什么

python中鏈表指的是什么

python中鏈表指的是什么

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python中鏈表指的是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問(wèn)題就找億速云,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI