2018寒假集訓總結第二節 鍊錶

2021-08-15 12:32:54 字數 1472 閱讀 5837

鍊錶這個東西嘛,一開始學我覺得暈是肯定會的,不過經過洗禮後就不會感覺那麼難了,首先明白的是,鍊錶是乙個線性結構,主要分為頭部,中間部分,尾部。鍊錶的構成從頭部開始講,確定乙個鍊錶的關鍵就是先確定頭部,有了頭部再對於頭部的下乙個進行操作,然後依次遞推。最基礎的鍊錶中的某乙個元素是由兩部分構成的。第乙個部分是當前部分的值,第二個部分是下乙個部分的位址,這樣的話,就很完美的構成了乙個線性結構。直接上**吧。

首先從最簡單的題型開始講,就是給你五個數,通過鍊錶存入,然後再通過鍊錶的形式輸出。

**如下:

#include

using namespace std;

struct node

;int main()

q=head->next;

while(q)//接下來就是輸出的地方了,確定好頭部,然後逐步輸出元素

return 0;

知道了順序建立鍊錶的方法,再去想一下逆序建立的方法。大體思路如下:首先建立起頭部,輸入第乙個元素後,在進行第二個元素輸入時,為了實現逆序,我們可以將第乙個輸入的元素擠到後面去,這個地方就會牽扯到指標轉換的過程,直接看**:

#include

using namespace std;

struct node

;int main()

q=head->next;

while(q)

return 0;

}**如下:

#include

using namespace std;

struct node

*head1,*head2,*q1,*q2,*p1,*p2,*t,*r;

int main()

for(i=1; i<=n; i++)

r=head1->next;

p1=head1;

while(head2->next)

if(t->datadata)

else if(t->data>r->data)

}p1=head1->next;

for(i=1; i<=n+m; i++)

else

cout}return 0;

}還有雙端佇列,其實雙端佇列和正常的鍊錶差不多。雙端對列和正常的鍊錶不同的是,雙端對列在正常佇列的基礎上加了乙個回指的功能。

**如下:

#include

using namespace std;

struct node

*head,*q,*tail,*p;

int main()

for(i=1; i<=m; i++)

}return 0;

ps:這個鍊錶還有乙個很典型的題目,就是約瑟夫問題,題目鏈結如下:

。這個題完全可以用陣列做,但是用鍊錶會更簡單一些。需要注意的是,一開始不要直接給head賦值,可以先建立乙個q,然後再把這個q賦值給head,然後做這個題還有乙個小技巧,就是在轉圈的時候,可以用整除法,不要計數,如果整除序號為0,那某這個就應該去掉。

第二節 線性表 順序表 鍊錶 逐個擊破

一.線性表 1.前言 線性表,全名為線性儲存結構。使用線性表儲存資料的方式可以這樣理解,即 把所有 一對一邏輯關係的 資料用一根線兒串 起來,再儲存到物理空間中 這根線有兩種串聯形式,如下圖,即順序儲存 集中存放 和鏈式儲存 分散存放 圖 3a 是多數人想到的儲存方式,而圖 3b 卻少有人想到。我們...

第二節 雙向鍊錶的GO語言實現

一 什麼是雙向鍊錶 和單鏈表比較,雙向鍊錶的元素不但知道自己的下線,還知道自己的上線 越來越像傳銷組織了 小煤車開起來,圖裡面可以看出,每個車廂除了乙個指向後面車廂的箭頭外,還有乙個指向前面車廂的箭頭 車頭 車尾除外 車頭只有指向後面車廂的箭頭,車尾只有指向前面車廂的箭頭。二 雙向鍊錶與go的對應結...

YARN學習總結 第二節 YARN架構

1.yarn架構 資源管理器 resourcemanager 和節點管理器 nodemanager 組成了資料計算框架。資源管理器是系統中的應用資源的權威仲裁者。節點管理器是乙個在每個節點都會執行的框架的 負責容器,監控資源的使用,並且報告這些資訊給資源管理器或者排程器 scheduler 來自網際...