朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2)
阿新 • • 發佈:2018-11-11
朱有鵬C語言高階---4.9.2--單鏈表--訪問單鏈表中各個節點的資料(1)
朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2)
原始碼:4.9.3danlianbiao2.c
#include <stdio.h> #include <strings.h> #include <stdlib.h> //構建一個連結串列節點 struct node { int data; //有效資料 struct node *pNext; //指向下一個節點的指標 }; //作用:建立一個連結串列的節點 //返回:指標,指標指向我們本函式新建立的一個節點的首地址 struct node * create_node(int data) { struct node *p = (struct node *)malloc(sizeof(struct node)); if (NULL == p) { printf("malloc error.\n"); return NULL; } //清理申請到的堆記憶體 bzero(p, sizeof(struct node)); //填充節點 p->data = data; p->pNext = NULL;//將來要指向下一個節點的首地址 //實際操作時將下一個節點malloc返回的指標複製給這個 return p; } int main(void) { //定義頭指標 struct node *pHeader = NULL; pHeader = create_node(1); //將本節點和它前面的頭指標關聯起來 pHeader->pNext = create_node(2); //將本節點和它前面的頭指標關聯起來 pHeader->pNext->pNext = create_node(3); //將來要指向下一個節點的首地址 //至此建立了一個有1個頭指標+3個完整節點的連結串列 //下面是4.9.3節的程式碼 //訪問連結串列的各個節點的有效資料,這個訪問必須注意不能使用p,p1,p2,而只能使用pHeader //訪問連結串列第一個節點的有效資料 printf("node1 data: %d.\n", pHeader->data);//pHeader->data等同於p->data //printf("p->data: %d.\n", p->data); //訪問連結串列第二個節點的有效資料 printf("node2 data: %d.\n", pHeader->pNext->data); //printf("p1->data: %d.\n", p1->data); // pHeader->pNext->pNext->data等同於p1->data //訪問連結串列第3個節點的有效資料 printf("node3 data: %d.\n", pHeader->pNext->pNext->data); //printf("p2->data: %d.\n", p2->data); return 0; }
結果:
node1 data: 1.
node2 data: 2.
node3 data: 3.