迴圈雙鏈表應用

2021-07-05 14:32:07 字數 1373 閱讀 4399

問題描述:設非空線性表ha和hb都用帶頭節點的迴圈雙鏈表表示。設計乙個演算法insert(ha,hb,i)。

其功能是:i=0時,將線性表hb插入到線性表ha的最前面;當i>0時,

將線性表hb插入到線性表ha中第i個節點的後面;當i大於等於線性表ha的長度時,

將線性表hb插入到線性表ha的最後面。

請在實現演算法時,除專案中給出的特殊要求,其餘工作均可利用專案4完成的演算法支援。

輸入描述:若干資料。

程式輸出:ha的資料hb的資料及按照題目排好序後的新鍊錶。

雙鏈表的演算法庫(不含main函式)
#include #include "cdlinklist.h"

void insert(cdlinklist *&ha, cdlinklist *&hb,int i)

if (i==0) //將hb的所有資料結點插入到ha的頭結點和第1個資料結點之間

else if (inext;

while (jnext;

}q=p->next; //q指向*p結點的後繼結點/

p->next=hb->next; //hb->prior指向hb的最後乙個結點

hb->next->prior=p;

hb->prior->next=q;

q->prior=hb->prior;

}else //將hb鏈到ha之後

free(hb); //釋放hb頭結點

}int main()

; initlist(ha);

createlistf(ha, ha, 10);

elemtype hb= ;

initlist(hb);

createlistf(hb, hb, 5);

printf("ha: ");

displist(ha);

printf("hb: ");

displist(hb);

insert(ha, hb, 0); //將0改為其他值,多次執行程式完成測試

printf("new ha: ");

displist(ha);

destroylist(ha);

return 0;

}

結果為:

迴圈雙鏈表

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

C 迴圈雙鏈表

雙鏈錶比單鏈表多了乙個prev指標域,用來指向乙個節點的前乙個節點,操作起來比單鏈表快捷許多,可以從前從後遍歷整個鍊錶。程式 include include typedef struct dbnode dbnode typedef dbnode dblink void create empty li...

迴圈雙鏈表演算法

設乙個帶頭結點的迴圈雙鏈表 dl,結點的值可能重複。設 計乙個演算法輸出 dl 所有元素的值,引數 d 0 時按照前驅方向輸出,d 1 時按照 後繼方向輸出。記得那次作業裡有乙個寫的很麻煩沒啥意思好像就是這個 建立乙個迴圈單鏈表,然後設乙個輸出函式 include include include d...