資料結構(線性錶鏈式儲存)的幾個基本操作
取結點個數
取結點個數時,cnt從0開始
//求單連結串列的表長
//從首元結點開始,依次計數所有結點
int ListLength_L(Linklist L) {
int cnt = 0;
LNode* p;
p = L->next;
while (p != NULL) {
cnt++;
p = p->next;
}
return cnt;
}
//取值,取單連結串列中第i個元素的內容
取第i個元素的內容時,cnt從1開始
因為p的初值時L->next,如果p不為NULL時,那麼p指向首元結點
如果i的值為1,並且cnt初值取0的話,那麼while迴圈會執行依次,此時p會指向首元結點後面一個結點,此時p->data的值不對
Status GetElem_L(Linklist L, int i, ElemType& e) {
LNode* p;
int cnt = 1;
p = L->next;
while (p != NULL && cnt < i) {
p = p->next;
cnt++;
}
if (p == NULL || cnt > i)
return ERROR;
e = p->data;
return OK;
}
按值查詢,根據指定資料獲取該資料的位置序號
cnt取0,理由同上
int LocateElem(Linklist L, ElemType e) {
LNode* p;
int cnt = 1;
p = L->next;
while (p != NULL && p->data != e) {
cnt++;
p = p->next;
}
if (p == NULL)
return 0;
return cnt;
}
//刪除第i個結點
因為要刪除第i個結點,所以第i個結點必須要有內容
讓p指向第i-1個結點,那麼p->next就是第i個結點,所以判斷條件要有p->next != NULL
Status DeleteList(Linklist& L, int i, ElemType& e) {
LNode* p;
p = L;
int cnt = 1;
while (p->next != NULL && cnt < i - 1) {
p = p->next;
cnt++;
}
if (p->next == NULL || cnt > i - 1)
return ERROR;
LNode* q = p->next;
e = q->data;
p->next = q->next;
delete q;
return OK;
}
//建立單連結串列(尾插法),元素插在連結串列尾部
void CreatList_T(Linklist& L, int n) {
L = new LNode;
L->next = NULL;
LNode* r = L;
for (int i = 0; i < n; i++) {
LNode* p;
p = new LNode;
scanf(&p->data);
r->next = p;
p->next = NULL;
r = p;
}
}
相關文章
- 資料結構線性表的鏈式儲存結構(單連結串列)的表示及其基本操作資料結構
- 線性表之鏈式儲存結構
- 線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
- 從零開始學資料結構和演算法(二)線性表的鏈式儲存結構資料結構演算法
- 資料結構:線性表(Python實現基本操作)資料結構Python
- 資料結構中線性表的基本操作-合併兩個線性表-按照元素升序排列資料結構
- 佇列的鏈式儲存結構佇列
- 單鏈錶鏈式結構的建立
- 資料結構知否知否系列之 — 線性表的順序與鏈式儲存篇(8000 多字長資料結構
- 資料結構實驗5、鏈佇列的基本操作資料結構佇列
- 【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現資料結構二叉樹Java
- 基本線性資料結構的Python實現資料結構Python
- 11 線性表的順序儲存結構
- 佇列的鏈式儲存結構的實現佇列
- 線性表之順序儲存結構
- 資料結構學習(C++)——線性鏈式結構總結(代後記)【1】 (轉)資料結構C++
- 資料結構學習(C++)——線性鏈式結構總結(代後記)【2】 (轉)資料結構C++
- HBase 資料儲存結構
- Oracle資料儲存結構Oracle
- 實戰資料結構(7)_線性表的綜合操作資料結構
- 【資料結構——圖和圖的儲存結構】資料結構
- Redis(一):基本資料型別與底層儲存結構Redis資料型別
- JQuery屬性與樣式——樣式操作.css()和元素資料的儲存.data()jQueryCSS
- 管理資料庫儲存結構資料庫
- 【PHP資料結構】圖的概念和儲存結構PHP資料結構
- 資料結構學習(C++)——圖【1】(基本儲存方法) (轉)資料結構C++
- [資料結構] - 線性表資料結構
- 資料結構 | 線性表資料結構
- 資料結構——線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- C++資料結構連結串列的基本操作C++資料結構
- Cassandra的內部資料儲存結構
- 樹型結構資料在資料庫基本表中的儲存及維護 (轉)資料庫
- 利用泛型模擬棧結構實現內部鏈式儲存結構泛型
- MyRocks儲存引擎資料結構解析儲存引擎資料結構
- 線性表的基本操作
- 前端資料結構--線性結構-連結串列前端資料結構