c 雙向鍊錶

2022-09-20 09:06:08 字數 2783 閱讀 2372

雙向鍊錶的遍歷,新增、修改、刪除的操作思路

(1)先找到雙向鍊錶的最後這個節點

(2)temp.next = new datanode();

(3)newdatanode.pre = temp;

(1)因為是雙向鍊錶,因此,我們可以實現自我刪除某個節點

(2)直接找到要刪除的這個節點,比如temp

(3)temp.pre.next = temp.next;

(4)temp.next.pre = temp.pre;

internal class datanode

public string name

/// /// 指向下乙個節點,預設為null

///

public datanode nextnode

/// /// 指向上乙個節點,預設為null

///

public datanode prenode

internal datanode(int id,string name)

public override string tostring()

],name=";

}}/// /// 雙向鍊錶

///

internal class mydoublelinkedlist

/// /// 遍歷雙向鍊錶

///

public void list()

//因為頭節點,不能動,因此我們需要乙個輔助變數來遍歷

datanode temp = head.nextnode;

while (true)

console.writeline();

} /// /// 新增乙個節點到雙向鍊錶的最後

///

///

public void add(datanode node)

//當推出while迴圈時,temp就指向了鍊錶的最後

//形成乙個雙向鍊錶

temp.nextnode = node;

node.prenode = temp;

} /// /// 修改乙個節點的內容

///

///

public void update(datanode node)

datanode temp = head.nextnode;

bool flag = false;

while (true)

//將temp後移

temp = temp.nextnode;

}if (flag)

else

的節點,不能修改!");

}} /// /// 刪除乙個節點

/// 1.對於雙向鍊錶,我們可以直接找到要刪除的這個節點

/// 2.找到後,自我刪除即可

///

///

public void delete(int id)

datanode temp = head.nextnode;

bool flag = false;

while (true)

temp = temp.nextnode;

}if (flag)

}else

,節點不存在。");}}}

/// /// 根據id號有序新增資料

///

///

public void addorderbyid(datanode node)

//後移

temp = temp.nextnode;

}if (flag)

else

}//呼叫

C 雙向鍊錶

部落格介紹了c語言,以及c 的單向鍊錶。那麼我們今天介紹的雙向鍊錶,顧名思義,就是資料本身具備了左邊和右邊的雙向指標。雙向煉表相比較單向鍊錶,主要有下面幾個特點 1 在資料結構中具有雙向指標 2 插入資料的時候需要考慮前後的方向的操作 3 同樣,刪除資料的是有也需要考慮前後方向的操作 那麼,乙個非迴...

C 雙向鍊錶

includeusing namespace std typedef int datatype class linknode friend class slist private datatype data linknode prev linknode next class slist void p...

C 雙向鍊錶

考慮順序表中總是可以很方便地找到表元素的前驅和後繼,但單鏈表只能找後繼。如要找前驅,必須從表頭開始搜尋。為了克服這一缺點,可採用雙向鍊錶 double linked list 雙向鍊錶經常採用帶頭結點的迴圈鍊錶方式,如下圖所示。檢視動畫演示 圖7.10 帶表頭結點的雙向迴圈鍊錶 假設 指標p指向雙向...