// 建立結構體 node
typedef
struct node
node,
*pnode;
// 在堆記憶體上 動態建立結構體p指標
頭指標:指向頭節點的指標變數
頭節點:沒有有效資料,但是指向首節點的,結構體
首節點:第乙個含有有效資料,並儲存下個有效節點的指標
尾結點:最後乙個含有效資料,不指向下個節點位址,為null
尾節點:指向尾節點的指標變數
只需要乙個頭指標
如上圖:
p是指向頭節點的指標變數,a是新建立節點的指標變數,分別指向不同的結構體,p的位址是 1000h,a的位址是2000h
data 賦值
a 的next 為null
p的next 指向 a
p也指向 a
pnode create_list
(void)
paddr = phead;
paddr->pnext =
null
;printf
("你需要生成鍊錶節點的個數\n");
scanf
("%d"
,&len)
;for
(i =
0; i < len;
++i)
ptemp->data = val;
paddr->pnext = ptemp;
ptemp->pnext =
null
; paddr = ptemp;
}return phead;
}
phead =
(pnode)
malloc
(sizeof
(node)
);
1、建立頭節點,這裡用到了malloc 標頭檔案
第乙個位元組位址 = (型別分類幾個位元組乙個資料塊)malloc(位元組)
phead 是指向乙個結構體首位址的,指標變數
ptemp =
(pnode)
malloc
(sizeof
(node)
);
2、ptemp 相當於,上面圖例中a
也是通過malloc 動態分配堆記憶體的結構體塊
ptemp->data = val;
ptemp->pnext =
null
;paddr->pnext = ptemp;
3、ptemp 賦值有效資料 data = val
ptemp->pnext = null
這步有什麼作用?
就是為了假設這個鍊錶,已經是最後乙個,那它既是首節點,也是尾節點,尾節點的next要賦值 null
paddr->pnext = ptemp
paddr 相當於 上圖中的p,p的next 指向當前 a的所指向的結構體
此刻建立了 (a->next)->b 指向關係
paddr = ptemp
4、指標變數偏移
此時,paddr 指向 ptemp所指向的 結構體
作用:單鏈條,考慮是,二元關係,也就是上乙個指標,和本次指標的關係
paddr 第一次指向 頭節點
paddr->next = ptemp paddr 的next 指向了 ptemp 首節點
paddr <=> ptemp 頭節點和首節點的 指向關係確定
paddr = ptemp 上個節點指向關係已經確定,移動指標到 ptemp ,用做下次新生成的節點關係繫結,直到最後乙個節點結束
資料結構 單鏈表c語言實現
list.h如下 ifndef list h define list h typedef struct node node,list void initlist list list bool insert head list list,int val bool insert tail list li...
資料結構之單鏈表(C語言實現)
資料結構之單鏈表 c語言實現 本次介紹三種單鏈表 普通單鏈表 迴圈鍊錶和雙向鍊錶,後面的部落格會繼續介紹後兩種鍊錶 首先介紹單鏈表的特點 1.鍊錶是由乙個個記憶體位址不連續的節點組成 2.每個節點最多只有乙個前驅,乙個後記 第乙個節點只有後繼沒有前驅,最後乙個節點只有前驅沒有後繼 3.鍊錶不支援隨機...
資料結構 單鏈表的c語言實現
鍊錶是通過一組任意的儲存單元來儲存線性表中的資料元素,這些儲存單元可以是連續的也可以是不連續的。為了建立起資料元素之間的關係,對於每個資料元素除了存放資料元素自身的資訊外,還必須有包含的指示該元素直接後繼元素儲存位置的資訊,這兩部分資訊組成乙個結點,即每個結點都有至少包括兩個域,乙個域儲存資料元素資...