單向鍊錶的缺點分析:
1)單向鍊錶,查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢.
2)單向鍊錶不能自我刪除,需要靠輔助節點,而雙向鍊錶,則可以自我刪除,所以前面我們單鏈表刪除節點,總是找到temp,remp是待刪除節點的前乙個節點.
(1)遍歷:遍歷和單鏈表一樣,只是可以向前,也可以向後.
(2)新增(新增到雙向鍊錶的最後):
1):先找到雙向鍊錶的最後乙個節點.
2):temp.next = newheronode
3):newheronode.pre = temp
(3)修改思路和原理的單向鍊錶一樣.
(4)刪除
1)因為是雙向鍊錶,因此,我們可以實現自我刪除某個節點
2)直接找到要刪除的這個節點
3)temp.pre.next = temp.next
4)temp.next.pre = temp.pre
接下來我們**實現:
package com.datastructure.com.datastructure.linklist;
public class doublelinkedlistdemo
}class doublelinkedlist
//遍歷鍊錶
public void showdoublelist()
heronode2 temp = head.next;
while (true)
system.out.println(temp);
temp = temp.next;}}
//新增乙個節點到最後
public void add(heronode2 node)
temp = temp.next;
}temp.next = node;
node.pre = temp;
}//修改乙個節點
public void update(heronode2 node)
heronode2 temp = head;
boolean flag = false;
while (true)
if(temp.no == node.no)
temp = temp.next;
}if(flag)else
}//刪除乙個節點
public void delete(int no)
heronode2 temp = head.next;
boolean flag = false;
while (true)
if(temp.no == no)
temp = temp.next;
}if(flag)
}else
}}class heronode2
@override
public string tostring() ';}}
資料結構之雙向鍊錶
簡述 指標域有乙個指標 而言,占用資源更大,但相應的 雙向鍊錶遍歷的時候只需要乙個指標就可以,而且 只有得到其中任何乙個節點就是得到整個鍊錶,單向鍊錶必須得到他的頭節點,才能遍歷整個鍊錶,而且得有兩個指標。實現 bothwaylinklist.h ifndef mymodule h define m...
資料結構之 雙向鍊錶
單鏈表的結點都只有乙個指向下乙個結點的指標。單鏈表的資料元素無法直接訪問其前驅元素。建立鍊錶 銷毀鍊錶 獲取鍊錶長度 清空鍊錶 獲取第pos個元素操作 插入元素到位置pos 刪除位置pos處的元素 dlinklist dlinklist creat 建立乙個鍊錶 void dlinklist des...
資料結構之雙向鍊錶
雙向鍊錶宛如一列火車,剛發明的時候只有乙個頭,如果它的行駛路線為 a b c d e f g h i j k a 這個時候有一批貨物需要從k運到j,那麼它的運輸路線一定是 k a b c d e f g h i j 所以後來火車就有了兩個頭,由此可見雙向鍊錶的重要性!雙向鍊錶 在單鏈表結點上增添了乙...