鍊錶是一種常見的資料結構,鍊錶是由多個結點(自引用結構體)串成的表。
什麼是自引用結構體?
自引用結構體是一種特殊的結構體型別,它有乙個指標型別的成員,這個指標成員指向與這個結構體一樣的型別。
鍊錶就是由乙個乙個結點(自引用結構體),結點被指標串起組成的表。
鍊錶的頭指標,頭節點
鍊錶中指向第乙個結點的指標,一般新建乙個頭節點用於存放頭指標,頭節點可有可無,但是頭指標必須要有。只有通過頭指標我們才能找到鍊錶,遍歷鍊錶中的每乙個結點。
1.結構體宣告
struct node
;
2.結點指標宣告
//為了簡寫,習慣上使用typedef 來將struct node 定義成乙個詞node來代替。
typedef
struct node node;
//生成三個結點指標
//head頭指標,previou指向最後結點的前乙個結點,current指向當前結點(最後乙個結點)
node *head, *previous, *current;
//用於判斷頭指標是否為空
head =
null
;
一、插入第乙個結點1.生成乙個結點由指標current指向該結點
current =
(node *
)malloc
(sizeof
(node)
);
2.將該結點的next指向null
current->next =
null
:
3.為該結點輸入資料
printf
("請輸入乙個數字\n");
scanf
("%d"
,¤t->data)
;
4.把current賦值給previous,使previous成為要插入的下乙個結點的先前結點。
previous = current;
二、插入下乙個結點1.生成第乙個結點,由指標current指向該結點
current =
(node *
)malloc
(sizeof
(node)
);
2.將current 指向null
current->next =
null
;
3.把指標previous的next 從null變成current
previous->next = current;
4.為該結點輸入資料
printf
("請輸入乙個數字\n");
scanf
("%d"
,¤t->data)
;
5.把current賦值給previous
previous = current
三、插入下乙個結點插入下乙個結點與插入第二個結點類似。
//定義自引用結構體(結點)
struct node
;//typedef簡寫struct node
typedef
struct node node;
//建立鍊錶和遍歷鍊錶函式的宣告
node *
creatlist()
;void
displist
(node *head)
;/**
* main函式用於測試
*/int
main
(int argc,
char
const
*ar**)
/** * 遍歷鍊錶輸出資料
* @node *head 需要遍歷的鍊錶的頭指標
*/void
displist
(node *head)
}/**
* 建立鍊錶
* @return node* 返回鍊錶的頭指標,使用者遍歷鍊錶。
*/node *
creatlist()
else
printf
("請輸入乙個數字\n");
scanf
("%d"
,¤t->data)
; previous = current;
}//返回頭指標用於遍歷鍊錶
return head;
}
c語言單向鍊錶建立
typedef struct nodenode,ptrnode 1 結構體的大小 參考鏈結 char 1 int 4 64位系統中,不管什麼型別的指標的大小都是8 cpu一次讀取8位元組,在結構體中會對不滿足8位元組的型別補全為8位元組 乙個實體結構體的大小為補全後所有變數大小的和。sizeof s...
單向鍊錶的建立和操作
public class singlylinkedlistdemo title singlylinkedlist description 簡單單向鍊錶 類 company author sunny date 2016 9 28下午11 12 45 class singlylinkedlist 插入頭...
C語言 建立單向鍊錶的頭結點以及遍歷鍊錶
建立頭節點 鍊錶的頭結點位址右函式值返回 node slistcreat 給head的成員變數賦值 head id 1 head next null node pcur head node pnew null int data while 1 新節點動態分配空間 pnew node malloc s...