連結串列到底啥意思?沒弄太明白,請大牛幫忙講一下,最好附帶點程式段(c或c++)
1樓:網友
一、單連結串列的建立。
有了動態記憶體分配的基礎,要實現連結串列就不難了。
所謂連結串列,就是用一組任意的儲存單元儲存線性表元素的一種資料結構。連結串列又分為單連結串列、雙向連結串列和迴圈連結串列等。我們先講講單連結串列。
所謂單連結串列,是指資料接點是單向排列的。乙個單連結串列結點,其結構型別分為兩部分:
1、資料域:用來儲存本身資料。
例:typedef struct node
stud;這樣就定義了乙個單連結串列的結構,其中char name[20]是乙個用來儲存姓名的字元型陣列,指標*link是乙個用來儲存其直接後繼的指標。
定義好了連結串列的結構之後,只要在程式執行的時候愛資料域中儲存適當的資料,如有後繼結點,則把鏈域指向其直接後繼,若沒有,則置為null。
下面就來看乙個建立帶表頭(若未說明,以下所指連結串列均帶表頭)的單連結串列的完整程式。
#include <
#include < /*包含動態記憶體分配函式的標頭檔案*/
#define n 10 /*n為人數*/
typedef struct node
stud;stud * creat(int n) /*建立單連結串列的函式,形參n為人數*/
h->name[0]='\0'; /*把表頭結點的資料域置空*/
h->link=null; /*把表頭結點的鏈域置空*/
p=h; /*p指向表頭結點*/
for(i=0;i<n;i++)
p->link=s; /*把s的位址賦給p所指向的結點的鏈域,這樣就把p和s所指向的結點連線起來了*/
printf("請輸入第%d個人的姓名",i+1);
scanf("%s",s->name); /*在當前結點s的資料域中儲存姓名*/
s->link=null;
p=s;return(h);
main()
這樣就寫好了乙個可以建立包含n個人姓名的單連結串列了。寫動態記憶體分配的程式應注意,請儘量對分配是否成功進行檢測。
2樓:昝煒歌
我通俗點說吧。先解釋指標的概念。
電腦儲存資訊,最重要的兩個名詞是儲存單元內容和儲存單元位址。儲存單元內容是我們要存下來的資訊,但是電腦的資訊多的數不清,電腦怎麼去找呢,每個儲存單元對應乙個位址,通過儲存單元的位址去找。
形象一點就是這樣的,儲存單元相當於賓館裡的房間,而我們住在賓館裡的人相當於儲存單元內容,而儲存單元位址就相當於門牌號,這個賓館很大,住的人多,如果我要找乙個人,可以問一下門牌號,然後就很容易找到那個人了。
指標就是一種這樣的變數,專門存放儲存單元位址的變數。比如我們可以定義乙個存放儲存單元b位址的指標a。如果我要找b儲存單元的內容,首先我要獲取的它的位址,其中乙個途徑就是利用訪問a的內容來得到儲存單元b的位址,在去訪問儲存單元b的內容,即指向b的指標a。
那麼連結串列是什麼呢?它實際上是n個結構體的集合。這個結構體存放兩個東西,乙個是變數(值),另乙個就是指向另乙個結構體的指標。
我們可以訪問乙個結構體,獲取到它裡面的內容,同時我們還可以通過它的指標訪問另乙個結構體,以此類推,就可以訪問一串結構體了,這就是連結串列。
3樓:網友
連結串列的理論知識樓上的兩位都說了,我就不再廢話了。如果你實在抽象不出來,就想想一條鎖鏈。資料域相當於鎖鏈上的每個環,鏈域相當於環之間的銜介面。
我個人覺得,連結串列應該是資料結構中最簡單的一種結構了。
如何把連結串列b鏈在連結串列a之後,形成新連結串列c
1 如果你不保留連結串列a和b,那麼將a的最後一個節點的後續指向b的表頭,a的表頭就是c的表頭head.a1 next b1 head 2 如果要保留a和b,先向c插入a的所有連線的節點,假如到p,然後在插入b所有連線的節點 while a null c語言封筆 include include de...
這次我搬來了太陽叔叔把微風嚇跑了,這句話該怎樣評價他?
我覺得這個意思就是說你搬家的時候 太陽公公也是笑著你的 所以他把微風都嚇跑了 那嗎這個天比較晴朗。你說到這個的話,那麼正常情況下,其實你這句話的話他是用了一個擬人的手法,那麼相對來說的話還是比較不錯的,一般來說,他這麼說的話應該是太過分了,這種人的話還是不要理他的好。這句話你應該這麼評價他,你說這個...
夢見搬家,別人把我的就傢俱扔了,夢見別人把自己家裡傢俱換位置了
夢見搬家 暗示你對目前的朋友 戀人 合夥人或是現在的工作環境 生活環境,甚至個人在社會和生活中的角色感到不滿,你內心中渴望改變眼前的處境,想要換工作單位,或是開始一段全新的生活。夢見別人把自己家裡傢俱換位置了 夢見搬家預示什麼 不預示什麼,就是一個夢而已,只要別放在心上,一切都照樣安好,祝你好運常在...