資料結構 雙鏈表介面的實現

2021-08-29 00:16:50 字數 1723 閱讀 2746

結構最複雜,一般用在單獨儲存資料。實際中使用的鍊錶資料結構,都是帶頭雙向迴圈鍊錶。另外這個結構雖然結構複雜,但是使用**實現以後會發現結構會帶來很多優勢.

#pragma once

#include #include #include #include typedef int ltdatatype;

typedef struct listnode

listnode;

typedef struct list

list;

void listinit(list* plist);

void listdestroy(list* plist);

void listpushback(list* plist, ltdatatype x);

void listpopback(list* plist);

void listpushfront(list* plist, ltdatatype x);

void listpopfront(list* plist);

listnode* listfind(list* plist, ltdatatype x);

//在pos之前進行插入

void listinsert(listnode* pos, ltdatatype x);

//刪除pos位置的節點

void listerase(listnode* pos);

void listprint(list* plist);

#include "list.h"

listnode* buylistnode(ltdatatype x)

void listinit(list* plist)

void listdestroy(list* plist)

free(plist->_head);

plist->_head = null;

}void listpushback(list* plist, ltdatatype x)

void listpopback(list* plist)

void listpushfront(list* plist, ltdatatype x)//頭插時,在head的後面插入

void listpopfront(list* plist)

listnode* listfind(list* plist, ltdatatype x)

cur = cur->_next;

} return null;

}void listinsert(listnode* pos, ltdatatype x)//在pos之前進行插入

void listerase(listnode* pos)//刪除pos位置的節點

void listprint(list* plist)

printf("<=>\n");

}

#include "list.h"

listtest()

int main()

順序表:一白遮白醜

白:空間連續、支援隨機訪問

醜: 1. 中間或前面部分的插入刪除時間複雜度o(n)

2.增容的代價比較大。

鍊錶:一胖毀所有

黑: 以節點為單位儲存,不支援隨機訪問

所有: 1.任意位置插入刪除時間複雜度為0(1) 

2.沒有增容問題,插入乙個開闢乙個空間。

雙鏈表介面的簡單實現

雙向鍊錶相當於單鏈表來說,實現的幾個介面無疑是比較簡單的,在這一篇部落格中,我將會整理一下關於雙向鍊錶的幾個介面實現的過程,希望各位大佬多多指正。1.首先建立乙個帶有雙向鍊錶的節點 如下 typedef int ltdatatype typedef struct listnode listnode ...

資料結構 雙鏈表

typedef struct nodenode 雙鏈表的根節點的bwd指標指向雙鏈表的最後乙個節點,fwd指標指向雙鏈表的第乙個節點,雙鏈表的value欄位為空 以下程式是將乙個值插入到乙個有序的雙鏈表中,如果鍊錶中已經有和該值相同的節點則不插入 include include typedef st...

資料結構 雙鏈表

目標 掌握雙鏈表的資料結構 來看看什麼是雙鏈表吧 雙鏈表與單鏈表的區別,單鏈表是單項的 而雙鏈表是有左右的 題目acwing 827 實現乙個雙鏈表,雙鏈表初始為空,支援5種操作 1 在最左側插入乙個數 2 在最右側插入乙個數 3 將第k個插入的數刪除 4 在第k個插入的數左側插入乙個數 5 在第k...