雙鏈表與單鏈表的比較

2022-06-19 16:03:15 字數 1269 閱讀 6174

雙鏈表在一定程度上就是單鏈表的的基礎上加上了乙個指標域,在一些情況下能夠使程式更加健壯和速率更加高效。

雙鏈表的結點定義

typedef struct node

int data;

struct node *next;

struct node *prior;

}node;

雙鏈表的定義

typedef struct doublelist

node *head;

node *tail;

size_t size;

}doublelist;

鍊錶的初始化

doublelist *list;

list = (doublelist *)malloc(sizeof(doublelist));

list->head = null;

list->tail = null;

list->size = 0;

頭插:1.在每次插入新結點是進行一次該雙鏈表是否為空的判斷,若為空則頭結點為建立的新結點。

list->head = newnode;

list->tail = newnode;

2.若煉表不為空:

newnode->next = list->head;//當鍊表為空時插入頭結點時,頭結點等於尾結點

list->head->prior = newnode;

list->head = newnode;

尾插:在插入之前進行一次判斷

1.鍊錶為空煉表時:

list->tail = newnode;

list->head = newnode;

2.鍊錶不為空時:

newnode->prior = list->tail;

list->tail->next = newnode;

list->tail = newnode;

雙鏈表的遍歷

1.正向遍歷

node *tmp;

tmp = list->head;

while(tmp){

printf("%d\n",tmp->data);

tmp = tmp->next;

2.反向遍歷

node *tmp;

tmp = list->tail;

while(tmp){

printf("%d\n",tmp->data);

tmp = tmp->next;

具體的**實現:github中zou-ting-rong/sample

單鏈表與雙鏈表佇列

一,鍊錶分類 單鏈表與雙向鍊錶 三,定義類 1 node類 傳值與重寫get,set方法 2 linknodelist類 將對資料的增刪差改的基本操作方法或屬性 3 main 主函式類,進行資料的呼叫 四,單鏈表的示例 public class linklistnode else 設定新節點為最後乙...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...

單鏈表與有序雙鏈表的實現

單鏈表的實現 描述定義單鏈錶類,建立帶頭結點的單鏈表 節點型別為整型資料 要求包含以下成員函式 頭插法建立單鏈表 利用建構函式實現 尾插法建立單鏈表 過載建構函式實現 鍊錶的遍歷 按值刪除乙個節點 按位置刪除乙個節點 鍊錶的析構 輸入輸入一組資料,以尾插法的形式建立單鏈表 表示輸入結束 構造第乙個鍊...