迴圈雙鏈表的刪除 插入 顯示

2021-07-03 14:49:09 字數 1273 閱讀 5745

#include #include #include typedef int itemvalue;

const int sleep_time = 10000;

typedef struct doublelinkedlist

doublelist, *pdoublelist;

doublelist *createcylicdoublelinkedlist()

return head;

}#if 0

/* 訪問迴圈雙鏈表 */

void visitcylicdoublelinkedlist(doublelist *dl)

}#endif

#if 1

/* 訪問迴圈雙鏈表 */

void visitcylicdoublelinkedlist(doublelist *dl)

}#endif

/* 刪除元素 */

void deletecylicdoublelinkedlist(doublelist *l, int pos)

if (pos <= 0)

doublelist *ptemp;

ptemp = l;

ptemp = ptemp->next;

int i=1;

while (ptemp != l && i!=pos)

if (ptemp == l)

else }

/* 在位置i之後插入元素value */

void insertitemindoublelinkedlist(doublelist *l, itemvalue ivalue, int pos)

if (pos <= 0)

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

pinsert->value = ivalue;

doublelist *ptemp;

ptemp = l;

int i = 0; //插入元素前乙個結點標號

while (ptemp->next != l && i != pos-1)

if (ptemp->next != l && i==pos-1)

if (ptemp->next == l && i==pos-1)

else }

int main()

其中迴圈雙鏈表的插入操作,不簡練,還沒想到簡潔方法,能夠實現:首結點、中部結點、尾部結點插入操作

雙鏈表的插入和刪除實現

雙鏈表相對於單鏈表,最大的不同就是在它的插入和刪除操作上。在刪除實現時,要注意尾結點的刪除和普通結點的刪除的區別,需分別對待。以下是我的實現 includeusing namespace std struct node node creat int n return head int show no...

迴圈雙鏈表

迴圈雙鏈表的定義和基本運算 include include typedef int elemtype typedef struct dnode 定義雙鏈表結點型別 dlinklist void createlistf dlinklist l,elemtype a,int n 頭插法建雙鏈表 void...

小試牛刀 單鏈表 雙鏈表插入與刪除

在正文開始之前,先介紹下一些相關的背景知識。首先,什麼是鍊錶?鍊錶的實質是資料結構按照儲存結構方式劃分的一種儲存結構。如下圖1所示,煉表不像順序儲存結構那樣,在記憶體中是一塊連續的區域,相反,鍊錶是 物理離散 邏輯聯絡 即在記憶體中,儲存單元是不連續的 彼此之間沒有順序,但是彼此之間是通過鍊錶中的指...