1//單向鍊錶節點的資料結構
2struct
singlelistnode3;
78//雙向鍊錶節點的資料結構
9struct
dobulelistnode
10;
鍊錶的操作方式主要分為增、刪、改、查,下面以單鏈表為例,分別以最簡單的方式介紹基本用法。
首先定義乙個單鏈表資料結構:
1struct
singlelistnode
26 singlelistnode(int
ntempvalue):nval(ntempvalue),pnext(null){}7};
89class
singlelist
1013 ~singlelist(){}
14public
:15 singlelistnode* find(int
nindex);
16void insert(int nindex,singlelistnode*pnode);
17 singlelistnode* remove(int
nindex);
18void
printlist();
19private
:20 singlelistnode*m_phead;
21int
m_nsize;
22 };
2.1 查詢
鍊錶節點的查詢不能通過索引快速定位,只能從頭節點開始查詢。
1 singlelistnode* singlelist::find(intnindex)28
9if(null ==m_phead)
1014
15 singlelistnode* pret =m_phead;
16for(int i = 0;i < nindex;i++)
1722}23
return
pret;
24 }
2.2 更新
首先從列表中查詢待更新的節點,直接把舊資料替換為新值即可。
2.3 刪除
刪除分為三種情況:
1 singlelistnode* singlelist::remove(intnindex)29
10if(null ==m_phead)
1115
16if(nindex == 0)17
21else
2229
30 pret = pprenode->pnext;
31if
(pret)
3236}37
38return
pret;
39 }
2.4 插入
1void singlelist::insert(int nindex,singlelistnode*pnode)28
9if(nindex < 0 || nindex >m_nsize)
1014
15if(nindex == 0)16
21else
2229
30 pnode->pnext = ppre->pnext;
31 ppre->pnext =pnode;32}
33 m_nsize++;
34 }
常見的面試題中考察鍊錶應用的場景有:
資料結構之單鏈表
date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...
資料結構之單鏈表
鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...
資料結構之單鏈表
由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...