鍊錶這個東西嘛,一開始學我覺得暈是肯定會的,不過經過洗禮後就不會感覺那麼難了,首先明白的是,鍊錶是乙個線性結構,主要分為頭部,中間部分,尾部。鍊錶的構成從頭部開始講,確定乙個鍊錶的關鍵就是先確定頭部,有了頭部再對於頭部的下乙個進行操作,然後依次遞推。最基礎的鍊錶中的某乙個元素是由兩部分構成的。第乙個部分是當前部分的值,第二個部分是下乙個部分的位址,這樣的話,就很完美的構成了乙個線性結構。直接上**吧。
首先從最簡單的題型開始講,就是給你五個數,通過鍊錶存入,然後再通過鍊錶的形式輸出。
**如下:
#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 來自網際...