双向链表的增删改查代码实现
public class DoubleLinkedList {
private HeroNode2 head = new HeroNode2(0, "", "");
private HeroNode2 getHead() {
return head;
}
public void list() {
if (head.getNext() == null) {
System.out.println("链表为空");
return;
}
HeroNode2 temp = head.getNext();
while (temp != null) {
System.out.println(temp);
temp = temp.getNext();
}
}
public void add(HeroNode2 heroNode) {
HeroNode2 temp = head;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(heroNode);
heroNode.setPre(temp);
}
public void update(HeroNode2 heroNode) {
if (head.getNext() == null) {
System.out.println("链表为空");
return;
}
HeroNode2 temp = head.getNext();
boolean flag = false;
while (true) {
if (temp == null) {
break;
}
if (temp.getNo() == heroNode.getNo()) {
flag = true;
break;
}
temp = temp.getNext();
}
if (flag) {
temp.setName(heroNode.getName());
temp.setNickname(heroNode.getNickname());
} else {
System.out.printf("没有找到编号%d的节点", heroNode.getNo());
}
}
public void del(int no) {
if (head.getNext() == null) {
System.out.println("链表为空");
return;
}
HeroNode2 temp = head.getNext();
boolean flag = false;
while (true) {
if (temp == null) {
break;
}
if (temp.getNo() == no) {
flag = true;
break;
}
temp = temp.getNext();
}
if (flag) {
temp.getPre().setNext(temp.getNext());
if (temp.getNext() != null) {
temp.getNext().setPre(temp.getPre());
}
} else {
System.out.printf("要删除的%d节点不存在\n", no);
}
}
}
class HeroNode2 {
private int no;
private String name;
private String nickname;
private HeroNode2 next;
private HeroNode2 pre;
public HeroNode2(int no, String name, String nickname) {
this.no = no;
this.name = name;
this.nickname = nickname;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public HeroNode2 getNext() {
return next;
}
public void setNext(HeroNode2 next) {
this.next = next;
}
public HeroNode2 getPre() {
return pre;
}
public void setPre(HeroNode2 pre) {
this.pre = pre;
}
@Override
public String toString() {
return "HeroNode2{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}