package com.mjw.linkedlist;
/***
* 1.遍歷:和單鏈表的思路一致
2.新增:
先找到雙向鍊錶的最後 temp.next=new heronode newheronode.pre=temp;
3.修改也是和單鏈表的思路一致
4.刪除 因為是雙向鍊錶,可以自我刪除,直接找到要刪除的結點,比如:temp
temp.pre.next=temp.next
temp.next.pre=temp.pre;
* @author 拾光
* */
public
class
doublelinkedlistdemo
}//4.定義singlelinkedlist來管理英雄結點
class
doublelinkedlist
/** * 新增乙個結點到雙向鍊錶
* @param heronode
*/public
void
addheronode
(heronode2 heronode )
//5沒有找到最後,就將temp後移
temp=temp.next;
}//6.當退出迴圈,temp就指向了鍊錶的最後,形成乙個雙向鍊錶
temp.next=heronode;
heronode.pre=temp;
}/**
* 顯示雙向鍊錶資訊
*/public
void
show()
//2.不為空,頭結點不動,需要輔助變數temp來遍歷
heronode2 temp=head.next;
while
(true
)//輸出temp資訊
system.out.
println
(temp)
;//temp後移
temp=temp.next;}}
/** * 修改結點的資訊,根據no來改,所以保證no不變,如果改變就意味新增新節點了
* @param newheronode
*/public
void
update
(heronode2 newheronode)
//2.找到需要修改的結點,根據no來改
//3.先定義輔助指標
heronode2 temp=head.next;
boolean flag=
false
;while
(true
) temp=temp.next;
}//5.根據flag判斷是否找到修改的結點
if(flag)
else
}/**
* 刪除雙向鍊錶結點,直接找到刪除的結點,自我刪除
* @param no
*/public
void
delete
(int no)
//2.定義輔助結點方便遍歷
heronode2 temp=head;
boolean flag=
false
;//3.標誌是否刪除
while
(true)if
(temp.no==no)
temp=temp.next;
//6.後移}if
(flag)
}else
}//統計單鏈表的有效節點個數,如果有頭結點,排除掉
public
intgetlength
(heronode2 heronode)
int length=0;
//定義乙個輔助變數temp,用於遍歷鍊錶,這裡我們沒有統計頭結點
heronode2 temp=head.next;
while
(temp!=null)
return length;}}
//1.定義乙個heronode結點,每個heronode物件就是乙個結點
class
heronode2
//3.重寫tostring,顯示方便
@override
public string tostring()
}
雙向鍊錶的增刪改查
雙向鍊錶增刪改查 單向鍊錶查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢 單向鍊錶不能自我刪除,需要輔助節點,而雙向鍊錶可以自我刪除,public class doublelinkedlistdemo class doublelinkedlist 遍歷雙向鍊錶的方法,顯示鍊錶 遍歷 pub...
雙向鍊錶的增刪改查操作
阿濤,你要認真對待每一件事,你要瀟灑,你要做自己!前面複習了單向鍊錶和迴圈鍊錶的操作,寫得比較亂,現在寫個比較規整的雙向鍊錶的的各項操作。先上個截圖 全部 如下 include include define len sizeof struct doublelinklist typedef struc...
mysql增刪改查鍊錶 鍊錶的增刪改查
include include 先定義鍊錶裡面的元素。typedef struct nodemynode 定義整個鍊錶。typedef struct linkmylink int isempty to mylink mylink mylink 判斷鍊錶是否為空。int push to mylinki...