鍊錶的定義:
鍊錶(linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)。
因為鍊錶不用必須按順序進行儲存,因此可以對鍊錶進行增、刪、改、查等操作,下面先介紹鍊錶的幾個插入的例子:
1.鍊錶的插入:
鍊錶的插入可以分為頭插和尾插和按位置插入,顧名思義就是從頭插入元素和從尾部插入元素還有從某一位置插入;
頭插法:
申請乙個新節點,讓頭結點的指標域指向新節點的資料域,新節點的指標域儲存第乙個元素的位址,則插入成功;
bool inserthead(plink phead, elem_type val)
//判斷鍊錶是否為空
plink pnewnode = buynode(val);
if (pnewnode == null)
//申請新節點
pnewnode->pnext = phead->pnext;
phead->pnext = pnewnode; //新節點插入
return true;
}尾插法:
先從頭開始遍歷,找到鍊錶的尾結點,尾結點的指標域儲存新節點的位址,則元素插入成功 ;
bool inserttail(plink phead, elem_type val)
//判斷鍊錶是否為空
plink pcur = phead;
while (pcur->pnext != null)
// 遍歷整個鍊錶,找到到尾結點
plink pnewnode = buynode(val);
if (pnewnode == null)
//申請新節點
pcur->pnext = pnewnode; // 插入新節點
return true;
}按位置插入:
元素插入步驟:
1.判斷結構是否合理;
2.判斷插入位置是否合理;
3.查詢要插入位置的前置結點
4.插入
// 判斷結構是否合理
if (pos < 0 || pos > getlength(phead))
// 判斷插入位置是否合理
plink pfront = phead;
for (int i = 0; i < pos; ++i)
//查詢要插入位置的前置結點
plink pnewnode = buynode(val);
if (pnewnode == null)
pnewnode->pnext = pfront->pnext;
pfront->pnext = pnewnode; //插入
return true;
}
鍊錶元素的刪除 插入
需要判斷要刪除元素在鍊錶中的位置 重要 用鍊錶的結構建立一條公交線路的站點資訊,從鍵盤依次輸入從起點到終點的各站站名,以單個 字元作為輸入結束,統計站的數量並輸出這些站點 include include malloc所需標頭檔案 include memset所需標頭檔案 struct station...
鍊錶定義 鍊錶的插入 鍊錶的刪除 鍊錶的查詢
鍊錶的定義 鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。它可以根據需要開闢記憶體單元。鍊錶有乙個 頭指標 變數,以head表示,它存放乙個位址。該位址指向乙個元素。鍊錶中每乙個元素稱為 結點 每個結點都應包括兩個部分 一為使用者需要用的實際資料,二為下乙個結點的位址。因此,he...
關於鍊錶的認識
對於一些基本的概念,我就不多說了 在我的感覺裡鍊錶就是乙個個方塊和箭頭的組成。那麼,方塊是什麼?箭頭又是什麼?先說方塊吧,它是鍊錶的最基本的組成單元,當然,這個方塊還可以再分,最簡單的就是單鏈表,只要將其分成2部分就可以了,一部分是我們要儲存的資料,另一塊就是乙個指標。那麼,這些指標是幹什麼的?這就...