C語言雙鏈表框架搭建練習(二)

2021-07-31 18:13:22 字數 2732 閱讀 6690

雙鏈表在功能上能夠彌補單鏈表上的不可逆,查詢上具有優勢,我們下面將介紹雙鏈表的搭建。

雙鏈表結構體定義:

typedef

struct doublelinklist

dblink, *pdblink;

因為雙鏈表是結構體中的指標連線起來的,所以建立鍊錶的時候自然不能少了尾部新增節點的函式

pdblink adddatadblink(pdblink phead, datatype data)  //雙鏈表插入資料

else

p->pnext = pnew;

pnew->plast = p;

}return phead;

}

接下來就可以建立雙鏈表

dblink *dblink =null;

dblink = adddatadblink(dblink, 20);

dblink = adddatadblink(dblink, 0);

dblink = adddatadblink(dblink, 21);

dblink = adddatadblink(dblink, 3);

dblink = adddatadblink(dblink, 56);

dblink = adddatadblink(dblink, 7);

dblink = adddatadblink(dblink, 1);

dblink = adddatadblink(dblink, 32);

dblink = adddatadblink(dblink, 5);

dblink = adddatadblink(dblink, 6);

建立完成不進行顯示是不是不爽呢

void showdblink(dblink*phead)

printf("%d %p %p,%p\n", p->

data, p, p->plast, p->pnext);

}//呼叫顯示

showdblink(dblink);

接下來是基本功能增刪查改的實現

上面建立鍊錶時候呼叫的`pdblink adddatadblink(pdblink phead, datatype data) 就實現了增加的功能。

pdblink deldata(pdblink phead, datatype data)

else

if (p->pnext ==

null)

else

if (p->plast ==

null)

else

free(p);

return phead;

}

pdblink finddbdata(dblink*phead, datatype data)

if (p->

data

!=data)

else

}

標頭檔案宣告 「linklist.h」

#include 

#include

#include

#include

typedef int datatype;

struct linklist

;typedef struct linklist node;

typedef struct doublelinklist

dblink, *pdblink;

node* adddata(node* phead, datatype data);

void showdata(node* phead);

void sortdata(node* phead, node* pback); //鍊錶的快速排序法

int getnum(node*phead); //讀取個數與反轉

node* rev(node*phead);

void showcircel(node*phead); //環狀鍊錶

node *adddatacircel(node*phead, datatype data);

node* findcircle(node*phead, datatype data);

node* delcircle(node*phead, datatype data);

node* addsortdata(node*phead, datatype data); //鍊錶插入排序

pdblink adddatadblink(pdblink phead, datatype data); //雙鏈表

void showdblink(dblink*phead);

pdblink finddbdata(dblink*phead, datatype data);

pdblink deldata(pdblink phead, datatype data);

pdblink adddatadbcircellink(pdblink phead, datatype data); //雙環鍊錶

void showdbcircellink(dblink*phead);

pdblink finddbcirceldata(dblink*phead, datatype data);

pdblink delcirceldata(pdblink phead, datatype data);

C語言雙鏈表框架搭建練習(三)

我們繼續實現雙鏈表插入排序,即將雙鏈表建立時進行排序操作,核心函式如下 node addsortdata node phead,datatype data else newp pnext p pnext p pnext newp if p phead p data newp data 因為要改變投節...

C語言雙鏈表框架搭建練習(一)

在資料結構中,鍊錶是不可或缺的存在,其在功能特點上與陣列的對立也是它具有在增刪上的獨特優勢 而c語言雖然在煉表處理上的方便程度不如c 但是更基層代表著更靈活。將二者結合,我們就可以根據需求做出不同的鍊錶結構,在完成基礎的搭建之後,看上去 量很大的c語言也可以很方便的操作,而且在執行速度和靈活性上完勝...

C語言 雙鏈表

還是 程式設計師面試寶典 上的 include include typedef struct student dnode 建立雙鏈表 dnode create else cycle 0 p next null p head head head next head pre null free p 釋放...