線性表分為:
鏈式儲存結構:單鏈表、靜態鍊錶、迴圈鍊錶、雙向鍊錶
一、迴圈鍊錶合併
兩個迴圈鍊錶的尾指標分別是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 雙向鍊錶的結構體 兩個指標,分別指向前乙個和後乙個節...