[C/C++] Linklist 的架構與使用
主題
Linklist 的目的與架構
Linklist 結構的寫法
Linklist 在主程式的宣告、使用
利用 cur 去存取 Linklist 的資料
活用 cur 與 next 搭配,跑完 Linklist 的內容
一、Linklist 的使用概念
Linklist 可以利用節點間的互相連接,來解決陣列的空間浪費、有限空間的問題
在 Linklist 裡,每一個節點結構裡面都有 data 和連結到下一個節點的指標
運作方式為,每存入一筆資料,就連結一個節點,以此來減少空間的相關問題
在概念上就如下列連結裡面的12、99、37連接
資料內容為12的第一個節點,他連結到了內容為99的第二個節點
藉由節點的連接,就可以做到類似陣列的儲存
Linklist 在插入、刪除上比陣列方便
但要拿出特定一筆資料時比陣列麻煩
二、Linklist 的程式碼
要做到節點的概念,必須使用到 struct 的語法
一個節點有資料和連結兩個部分,所以 struct 要把它們宣告進來
下面就是一個最基本的 Node架構
struct Node//節點 { int data;//資料 struct Node *next;//指向下一個節點的指標 };
這裡假設該 Linklist 是放整數資料,那個型態可以改,即使要放另外一個不同的結構也可以
next 用來指向下一個節點,所以要宣告成指標的形式,下一個節點也是 struct Node 型別
因此next宣告為struct Node *
三、實際使用
int main() { struct Node a;//創立節點a struct Node b;//創立節點b //設定節點內容 a.data = 5; b.data =10; //串連節點連結 a.next = &b; b.next = NULL;//b後面沒人了,所以連到NULL struct Node *cur;//創造一個指標用來跑鏈結串列 cur = &a;//從第一張牌開始跑 while(cur != NULL)//假如他指向的連結串列不為空就繼續做 { printf("%d→",cur->data);//印出節點內的內容 ,利用指標操控資料要用"->" 不能用 "." cur = cur->next;//跑到當前節點指向的下一個節點 } printf("NULL\n"); system("PAUSE"); return 0; }
這裡需要特別注意的就是,用指標操控指向的結構的內容時,要用”->”
這裡寫 cur.data 那就錯了,因為 cur 是一個指向 Node 結構的指標,它裡面的內容是地址,所以不會有 data 這個變數
a.data 才是對的, a 是一個 Node 結構,裡面的內容就是結構的內容,所以 a 有 data 變數
團長大大的文章大家要用心看阿~