線性表及單鏈表
阿新 • • 發佈:2018-11-21
一.
頭指標與頭結點的異同:
頭指標:
頭指標是指連結串列指向第一個結點的指標,若連結串列有頭結點,則是指向頭結點的指標。
頭指標具有標識作用,所以常用頭指標冠以連結串列的名字。
無論連結串列是否為空,頭指標均不為空,頭指標是連結串列的必要元素。
頭結點:
頭結點是為了操作的統一和方便而建立的,放在第一元素的結點之前,其資料域一般無意義(也可存放連結串列的長度)
有了頭結點,對在第一元素結點錢插入結點和刪除第一結點,其操作與其他結點的操作就統一了。
頭結點不一定是連結串列必需元素。
線性錶鏈式儲存結構程式碼描述
Typedef struct Node { ElemType data; Struct Node *next; } Node; Typedef struct Node *LinkList;
三.
單鏈表的讀取
獲得連結串列第i個數據元素的演算法思路:
1. 宣告一個結點p指向連結串列第一個結點,初始化j從1開始
2. 2.當j<i時,就遍歷連結串列,讓p的指標向後移,不斷指向下一個結點,j累加1;
3. 若到連結串列末尾p為空,則說明第i個元素不存在;
4. 否則查詢成功,返回結點p的資料;
實現程式碼演算法如下:
/*初始條件:順序線性表L已存在,1<=i<=ListLength(L)*/ /*操作結果:用e返回L中第i個數據元素的值*/ Status GetElem(LinkList L,int i,ElemType*e) { int j; Linklist p; //宣告一結點p P=L->next; //讓p指向連結串列L的第一個結點 j=1; while(p&&j<i) //當p不為空或者計數器j還沒有找到i時,迴圈繼續 { P=p->next; //讓p指向下一個結點(傳遞指標) ++j; } if(!p||j>i) return ERROR; //i不存在 *e=p->data; //找到i,用e返回i的值 return OK; }
核心思想:工作指標後移