資料結構-鏈表

來源:互聯網
上載者:User

鏈表是一種常見的重要的資料結構,他的特點是動態地進行儲存分配。
1.鏈表有哪些優勢。
舉個栗子:如果事先不知道不知道要存放的資料的長度,就要把數組定的足夠大。如果要用同一個數組存放不同長度的資料時,就要選擇資料長度最長的那個作為數組的長度。鏈表能夠比較好的解決這兩種情況。
2.什麼是鏈表。
鏈表有一個“頭指標”,它指向一個元素,這個元素在鏈表中被稱為“結點”,而每一個“結點”應該包含兩個部分:使用者需要的資料和下一個結點的地址(指標)。這樣結點與結點相互串連之後知道最後一個“表尾”,他的指向下個結點的地址(指標)為NULL。至此,鏈表結束。
3.鏈表中存放的地址是不連續的。
想要訪問一個鏈表,必須知道鏈表的“頭指標”。
4.如何建立一個鏈表。
用結構體變數建立鏈表最為合適。

struct ListNode{int value;struct ListNode*next;};   

ListNode結構體成員中的 next指標是一個結構體指標,指向的還是struct ListNode類型的資料,所以利用這種方法建立鏈表。

5.如何建立靜態鏈表

#include<iostream>using namespace std;struct ListNode{int value;struct ListNode*next;}; int main(){    struct ListNode a,b,c,*head,*p;    a.value  = 1;    b.value  = 2;    c.value  = 3;    head = &a;    a.next = &b;    b.next = &c;    c.next = NULL;    p = head;    do     {printf("%d\n",p->value);    p = p->next;    } while (p!= NULL);    getchar();    return 0;}

程式用結構體變數a,b,c構成一個靜態鏈表,如代碼:

    head = &a;    a.next = &b;    b.next = &c;    c.next = NULL;

將鏈表的“頭指標”head賦值給指標p,其中head指向的結構體變數a的首地址,再用p輸出這個鏈表中的實際資料。所以,一個鏈表可以用一個指向其首地址的指標(頭指標)表示。

此外,我們可以把程式修改一下,將鏈表的建立與列印寫成獨立的函數:

#include<iostream>using namespace std;struct ListNode{int value;ListNode *next;};void showList(ListNode * L);void CreateList(ListNode * L,int n);int main(){    ListNode * L = new ListNode;    L->next = nullptr;    CreateList(L,5);    showList(L);    getchar();    getchar();    return 0;}void showList(ListNode * L){    ListNode * p = L;    while (p)    {        cout<<p->value<<' ';        p = p->next;    }    cout<<endl;}void CreateList(ListNode * L,int n){    cin>>L->value;//輸入第一個結點的資料值    n--;    for (int i = 0; i < n; i++)    {        ListNode * p = new ListNode;        cin>>p->value;        p->next = nullptr;        L->next = p;        L = p;    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.