鏈式存盤 :用一組任意的存盤單元存盤線性表中的資料元素,用這種方法存盤的線性表簡稱線性鏈表,存盤鏈表中結點的一組任意的存盤單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的,
為了正確表示結點間的邏輯關系,在存盤每個結點值的同時,還必須存盤指示其直接后繼結點的地址(或位置),稱為指標(pointer)或鏈(link),這兩部分
組成了鏈表中的結點結構,如下圖所示,

data :資料域,存放結點的值,next :指標域,存放結點的直接后繼的地址,
指標域和資料域組成資料元素稱為存盤映象,稱為結點(NODE).
把鏈表中的第一個結點的存盤位置叫做頭指標,最后一個結點指標為空(NULL)
頭指標和頭結點的區別:
頭指標:
--頭指標是指鏈表指向第一個結點的指標,若鏈表有頭結點,則是指向頭結點的指標
--頭指標具有標識作用,所以頭指標冠以鏈表的名字(指標變數的名字)
--無論鏈表是否為空,頭指標均不為空
--頭指標是鏈表的必要元素
頭結點:
--頭結點是為了操作的統一和方便而設立的,放在第一個元素的結點之前,其資料域一般無意義(但也可以用來存放鏈表的長度)
--有了頭結點,對在第一元素結點前插入結點和洗掉第一結點起操作與其它結點的操作就統一了
--頭結點不一定是鏈表的必要元素

單鏈表存盤結構
typedef struct Node { ElemType data; //資料域 struct Node* Next;//指標域 }Node; typedef struct Node* LinkList;
如果p->data = ai , 那么p->next->data=https://www.cnblogs.com/wy9264/p/ai+1
Status GetElem( LinkList L, int i =, ElemType *e) { int j; LinkList p; p= L->next; j=1; while(p && j<i) { p= p->next; ++j; } if( !p || j>i) { return ERROR; } *e = p->data; return OK; }
單鏈表,插入時間復雜度O(1) ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/217083.html
標籤:其他
上一篇:JS前端面試題(三)
下一篇:移掉 K 位數字
