1、基本概念
鏈式儲存結構不需要用位址連續的儲存單元來實現,而是通過「鏈」建立起資料元素之間的順序關係,因此它不要求兩個在邏輯上相鄰的資料元素在物理邏輯上也相鄰。從而,在插入和刪除元素的時候,不需要對原來的資料元素進行移動,只需要改變鍊錶節點之間的指向關係即可,從而提公升了執行時效率。
2、主要儲存結構
鍊錶的儲存結構主要有單鏈表、迴圈鍊錶、雙向鍊錶、靜態鍊錶等幾種形式
3、基本實現
#include
<
string
.h>
#include
#include
//資料結點型別
typedef struct node chainlist;
// 將資料新增到鍊錶尾部
chainlist *addend(chainlist *head, data
data)
// 迴圈遍歷至最後乙個節點
h = head;
while (h->next)
// 建立節點之間的聯絡
h->next = node;
return head;
}// 新增節點至頭部
chainlist *addfirst(chainlist *head, data
data)
node->
data
=data;
// 插入到頭部
// 如果鍊錶為空
if (head ==
null)
// 插入的節點變成了頭節點
node->next = head;
head = node;
return head;
}// 查詢指定關鍵字的節點
chainlist *find(chainlist *head, char *key)
// 沒有匹配,返回空指標
return
null;
}// 在指定關鍵字之後插入元素
chainlist *insert(chainlist *head, char *key, data
data)
node->
data
=data;
// 查詢要插入節點的位置
chainlist *node1;
node1 = find(head, key);
if (node1) else
return head;
}// 刪除指定關鍵字的節點
int delete(chainlist *head, char *key) else
}// 刪除失敗
return0;}
// 返回鍊錶的長度
int length(chainlist *head)
return count;
}
資料結構之鍊錶操作
線性表鏈式儲存結構定義 為了表示每個資料元素ai與其後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身資訊外,還需儲存乙個指示其直接後繼的資訊。我們把儲存資料元素的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分資訊組成資料元素ai的儲存影...
資料結構之鍊錶操作
面試中單鏈表的相關操作也是常考的內容,本博文也是之前學習時的筆記,在此記錄下來,以便日後用到,同時歡迎批評指正。一 基本操作typedef struct lnode 2.鍊錶的銷毀 void destorylist linklist l else l next ptemp 3.鍊錶的判空 bool ...
資料結構 鍊錶操作之反轉鍊錶
這兩天遇到幾個反轉鍊錶的題目,覺得比較有意思,這裡分享一下 1 給出乙個鍊錶,同時給出索引m和n,要求將位於m和n之間的節點反轉,然後返回結果。1 m n lengthof linklist eg 1 2 3 4 5 m 2,n 4 輸出 1 4 3 2 5 反轉鍊錶的時候,有乙個比較關鍵的技巧,比...