資料結構之鍊錶操作

2021-07-27 11:04:45 字數 1447 閱讀 3711

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 反轉鍊錶的時候,有乙個比較關鍵的技巧,比...