線性表3 雙鏈表

2021-07-15 13:50:03 字數 1313 閱讀 7295

雙鏈表的每個節點包含三個部分:該節點的資料域,節點的直接前驅,節點的直接後繼。

插入:不管是在節點p前插入新節點s,還是在p節點後插入節點s,這裡有個比較容易記和理解的地方:不管是哪種操作,都後處理p.prior和p.next就對了。

解釋下,如果在p之前插入節點s,首先要做的部分是s.prior=p.prior,  s.next=p而後是p.prior.next=s p.prior=s 

此外還要考慮兩點,在p之後插入時,p是否為尾節點;在p之前插入時,p是否為第乙個節點。

刪除:也要考慮刪除點是否為尾節點和是否為第乙個節點。

程式如下

package list;

public class student

public student(int id,string name)

public int getid()

public void setid(int id)

public string getname()

public void setname(string name)

}

package list;

public class studounode

public studounode(student stu)

public student getstu()

public void setstu(student stu)

public studounode getprior()

public void setprior(studounode prior)

public studounode getnext()

public void setnext(studounode next)

}

package list;

public class linklist

public void insertafter(stunode p,stunode s)

public void insertbefore(stunode p,stunode s)

q=q.getnext();

} }public void delete(stunode p)

q=q.getnext();

} }public void converse()

}public void print()

} public static void main(string args)

}

結果:

線性表 雙鏈表

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

線性表 雙鏈表

雙鏈表的結點結構 空的雙向鍊錶 處理原則 先在正向鍊錶上插入,再在逆向鍊錶上插入 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...

線性表 雙鏈表(非迴圈)

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