大話資料 線性表之迴圈 雙向鍊錶

2021-08-10 02:24:53 字數 931 閱讀 9997

線性表分為:

鏈式儲存結構:單鏈表、靜態鍊錶、迴圈鍊錶、雙向鍊錶

一、迴圈鍊錶合併

兩個迴圈鍊錶的尾指標分別是reara,rearb

a鍊錶的頭結點為reara->next

b鍊錶的頭結點為rearb->next,第乙個結點為rearb->next->next

1、儲存a鍊錶的頭結點 p

2、將本是指向a表頭結點的a表的尾指標 指向 b表的第乙個結點(不是頭結點)

3、儲存b鍊錶的頭結點 q

4、將本是指向b表頭結點的b表的尾指標 指向 a表的頭結點

5、釋放b鍊錶的頭結點 q

p=reara->next;

reara->next=rearb->next->next;

q=rearb->next;

rearb->next=p;

free(q);//釋放q

二、雙向鍊錶的插入和刪除

線性表的雙向鍊錶儲存結構

typedef

struct dulnode

dulnode,*dulinklist;

插入**:

指標p(元素值ai), 指標p->next(ai+1), 待插入結點s(e)

s->prior=p;

s->next=p->next;

p->next->prior=s;

p->next=s;

刪除**:

指標p->prior p(ai元素) p->next

刪除結點p

p->prior->next=p->next;

p->next->prior=p->prior;

free(p);

線性表 雙向迴圈鍊錶

雙向鍊錶 double liked list 就是在單向鍊錶的每個結點中,新增乙個指向前驅結點的指標域。class doublenode 雙向鍊錶迴圈帶頭結點的空鍊錶,如圖 非空的迴圈帶頭結點的雙向鍊錶,如圖 插入操作不複雜,不過順序很重要,不要寫反了。假設儲存元素 e 的結點為 s,要實現將結點 ...

線性表(一) 鍊錶之雙向迴圈鍊錶

四 雙向迴圈鍊錶的實現 template class cycdullist cycdullist 獲取鍊錶大小 size t size 判斷鍊錶是否為空 bool empty 獲取頭節點 listnode get head 獲取任意位置節點 listnode get node const int i...

線性表之雙向鍊錶

include include define error 0 define ok 1 typedef int status typedef int elemtype typedef struct dulnodedulnode,dulinklist 雙向鍊錶的結構體 兩個指標,分別指向前乙個和後乙個節...