資料結構學習筆記二 雙向鍊錶

2021-09-20 13:00:58 字數 1730 閱讀 4608

雙向鍊錶(雙鏈表)是鍊錶的一種。和單鏈表一樣,雙鏈表也是由節點組成,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。

表頭為空,表頭的後繼節點為"節點10"(資料為10的節點);「節點10"的後繼節點是"節點20」(資料為10的節點),「節點20"的前繼節點是"節點10」;「節點20"的後繼節點是"節點30」,「節點30"的前繼節點是"節點20」;…;末尾節點的後繼節點是表頭。

刪除"節點30"

刪除之前:「節點20"的後繼節點為"節點30」,「節點30」 的前繼節點為"節點20"。「節點30"的後繼節點為"節點40」,「節點40」 的前繼節點為"節點30"。

刪除之後:「節點20"的後繼節點為"節點40」,「節點40」 的前繼節點為"節點20"。

在"節點10"與"節點20"之間新增"節點15"

新增之前:「節點10"的後繼節點為"節點20」,「節點20」 的前繼節點為"節點10"。

新增之後:「節點10"的後繼節點為"節點15」,「節點15」 的前繼節點為"節點10"。「節點15"的後繼節點為"節點20」,「節點20」 的前繼節點為"節點15"。

public class doublelink	}	

//constructor

public doublelink()

//return size

public int size()

//return true if linkedlist is empty

public boolean isempty()

//return index of specific node

private dnodegetnode(int index)

if(index <= mcount/2)

dnodeinode = getnode(index);

dnodetnode = new dnode(t, inode.prev, inode);

inode.prev.next=tnode;

inode.next=tnode;

mcount++;

return;

} //insert node at index 0

public void insertfirst(t t)

//insert node at last node

dnodenode = new dnode(t, mhead.prev, mhead);

mhead.prev.next = node;

mhead.prev = node;

mcount++;

} //delete index node

public void del(int index)

//delete head

public void deletefirst()

//delete last node

public void deletelast()

資料結構學習(三) 雙向鍊錶

class heronode2 override public string tostring public void add heronode2 heronode temp temp.next 退出while時候,temp就指向了鍊錶的最後,指向新的node temp.next heronode ...

資料結構四雙向鍊錶

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。而之前的單鏈表為單向鍊錶,雙向鍊錶也就是在單鏈表的結點中增加乙個指向其前驅的pre指標。如圖 這裡介紹雙向鍊錶的常用操作 l ...

資料結構 003雙向鍊錶

雙鏈表 include using namespace std typedef int elemtype typedef struct lnode lnode,linklist 初始化 linklist init linklist 頭插法建立鍊錶 linklist head insert linkl...