#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所示,煉表不像順序儲存結構那樣,在記憶體中是一塊連續的區域,相反,鍊錶是 物理離散 邏輯聯絡 即在記憶體中,儲存單元是不連續的 彼此之間沒有順序,但是彼此之間是通過鍊錶中的指...