線性表 雙鏈表

2021-09-27 16:13:43 字數 1465 閱讀 1191

雙鏈表的結點結構

空的雙向鍊錶

處理原則:先在正向鍊錶上插入,再在逆向鍊錶上插入

q->rlink=p->rlink;

p->rlink=q;

q->llink=p;

q->rlink->llink=q;

在表尾進行插入時:

q->rlink=p->rlink;

p->rlink=q;

q->llink=p;

if(q->rlink)

q->rlink->llink=q;

p->llink->rlink=p->rlink;

p->rlink->llink=p->llink;

delete(p);

刪除表尾結點:

p->llink->rlink=p->rlink;

if(p->rlink)

p->rlink->llink=p->rlink;

delete(p);

template struct  dnode;
template class doublelink ;
①空表的構造

template doublelink ::doublelink()
②頭插法

node*s;

s=new node;

s->data=data;

s->rlink=head->rlink;

head->rlink=s;

s->llink=head;

if (s->rlink)

s->rlink->llink=s;

return;}

③遍歷

template void doublelink::display()

cout

template doublelink::~doublelink()

}

線性表 雙鏈表

雙鏈表也是線性表的一種,它的全稱是 線性雙向鏈結表,它有以下特點 在每個節點中除包含有數值域外,設定有兩個指標域,分別用以指向其前驅節點和後繼節點。既可以依次向後訪問每乙個節點,也可以依次向前訪問每乙個節點。dlinklist.h如下 include include typedef int elem...

線性表3 雙鏈表

雙鏈表的每個節點包含三個部分 該節點的資料域,節點的直接前驅,節點的直接後繼。插入 不管是在節點p前插入新節點s,還是在p節點後插入節點s,這裡有個比較容易記和理解的地方 不管是哪種操作,都後處理p.prior和p.next就對了。解釋下,如果在p之前插入節點s,首先要做的部分是s.prior p....

線性表 雙鏈表(非迴圈)

s1雙鏈表定義 1 雙 向 鍊錶中有兩條方向不同的鏈,即每個節點中除next域存放後繼結點地之外,還增加乙個指向其直接前驅的指標域prior。2 哨兵節點時隔啞物件,可以簡化邊界條件。s2雙鏈表前插與刪除節點操作 1 雙向鍊錶的前插操作。由於雙鏈表的對稱性,在雙鏈表中能完成各種插入與刪除操作 2 雙...