2,双向链表介绍
1,双向链表的新增
public void addDoubleList(HeadNode_02 headNode_02) {
HeadNode_02 temp = head;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = headNode_02;
headNode_02.prev = temp;
}
public void addOrderDoubleList(HeadNode_02 headNode_02){
HeadNode_02 temp=head;
boolean flag=false;
while (true){
if(temp.next==null){
break;
}
if(temp.next.no>headNode_02.no){
break;
}
else if(temp.next.no==headNode_02.no){
flag=true;
break;
}
temp=temp.next;
}
if(flag){
System.out.println("新增节点的标号已经存在"+headNode_02.no);
}else{
if(temp.next==null){
temp.next=headNode_02;
headNode_02.prev=temp;
}else{
headNode_02.prev=temp;
temp.next.prev=headNode_02;
headNode_02.next=temp.next;
temp.next=headNode_02;
}
}
}
2,双向链表的查找
public void listDoubleLink() {
if (head.next == null) {
System.out.println("双向链表为空!");
return;
}
HeadNode_02 temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
3,双向链表的修改
public void updateDoubleList(HeadNode_02 headNode_02) {
if (head.next == null) {
System.out.println("双向链表为空!");
return;
}
HeadNode_02 temp = head.next;
boolean flag = false;
while (true) {
if (temp == null) {
break;
}
if (temp.no == headNode_02.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.name = headNode_02.name;
temp.nameNick = headNode_02.nameNick;
} else {
System.out.println("修改的元素不存在于双向链表当中!");
}
}
4,双向链表的删除
public void deleteDoubleList(int no) {
if (head.next == null) {
System.out.println("双向链表为空!");
return;
}
HeadNode_02 temp = head.next;
boolean flag = false;
while (true) {
if (temp == null) {
break;
}
if (temp.no == no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.prev.next = temp.next;
if (temp.next != null) {
temp.next.prev = temp.prev;
}
} else {
System.out.println("双向链表中没有待删除的节点" + no);
}
}