鍊錶三要素
1)頭指標(head):是用來說明鍊錶開始了,頭指標就代表鍊錶本身
所以以後要訪問鍊錶,就要訪問頭指標
2)結點(node):鍊錶中每乙個結構體變數
3)尾指標:用來說明鍊錶的結束(它是乙個空指標,null)
#include#includetypedef struct stud //定義了乙個結構體stu;//這個指標的型別是結構型別,以後這個指標就只能夠指向struct stud這種stu *creatlink(stu a, int n) //要返回鍊錶實際上就是要返回頭指標 a[n - 1].next = null;//退出迴圈後,把末指標作為null return head;//返回頭指標,實際上代表鍊錶本身 }//鍊錶的查詢void findbyid(stu *head, char id)//在乙個鍊錶中查詢指定的工號 p = p->next; } //退出迴圈後,再來判斷是否找到了 if (p==null)//沒有找到 else//說明找到了 }//鍊錶的刪除//1:找到要刪除的結點//2:刪除//3:該函式要返回刪除之後新鍊錶,實際上返回頭指標stu *delbyid(stu *head, char id)//根據工號去刪除對應鍊錶中的乙個結點 //在p移動之前,要保留以前的位置 front = p; p = p->next;//p移動向下乙個結點 } if (p != null)//說明找到要刪除的結點 return head;}//鍊錶的插入//1:找到要插入的位置//2:執行插入操作//插入乙個節點,並且要返回插入之後的鍊錶stu *insert(stu *head, stu *pnewnode) //退出迴圈之後,檢查下p的狀態 if (p==head)//說明新的節點應該插入在開頭 else else //在中間插入(在p的前面插入) } return head;//返回指標,就是返回鍊錶}//輸出鍊錶中所有結點值 void outputlink(stu *head)//引數需要乙個鍊錶,乙個鍊錶實際上就是需要頭指標 printf("**************************\n"); }void main(), , , , }, *head, newnode = ,*pnewnode=&newnode; char id[100]; //現在還是乙個陣列,還不是乙個鍊錶,所以呼叫creatlink來建立乙個鍊錶 head = creatlink(a, 5); outputlink(head); //printf("請輸入乙個工號:\n"); //gets_s(id,60);//gets(id); //findbyid(head, id); //head = delbyid(head, id);//呼叫delbyid來刪除乙個節點,但是看不到效果 //為看到效果應該再輸出一次 head = insert(head, pnewnode); outputlink(head);}
C語言之鍊錶
鍊錶的觀念 鍊錶是一種物理儲存上非連續,資料元素的邏輯順序通過鍊錶中的指標鏈結次序,實現的一種線性儲存結構。特點 鍊錶由一系列節點 鍊錶中每乙個元素就稱為節點 組成,節點在執行時動態生成 malloc 每個節點包括兩部分 乙個是儲存資料元素的資料域 乙個是儲存下乙個節點位址的指標域 定義乙個鍊錶 t...
C語言之迴圈鍊錶
一 迴圈鍊錶 迴圈鍊錶是與單鏈表一樣,是一種鏈式的儲存結構,所不同的是,迴圈鍊錶的最後乙個結點的指標是指向該迴圈鍊錶的第乙個結點或者表頭結點,從而構成乙個環形的鏈。迴圈鍊錶的運算與單鏈表的運算基本一致。所不同的有以下幾點 1 在建立乙個迴圈鍊錶時,必須使其最後乙個結點的指標指向表頭結點,而不是象單鏈...
C語言 之鍊錶操作
常見資料結構有 表棧 佇列樹鍊錶相對於陣列有很多優點,現在總結一下鍊錶的常用操作。1.單鏈表新增節點 include include includestruct list node typedef struct list node list one list one head null 定義乙個全域...