1、源码
Player2 实体类
package com.study.linkedlist;public class Player2 { public int no; public String name; public Player2 next; public Player2 pre; public Player2(int no, String name) { this.no = no; this.name = name; } public Player2() { } @Override public String toString() { return "Player2{" + "no=" + no + ", name='" + name + '\'' + '}'; }}
DoubleLinkedList类
package com.study.linkedlist;
import java.util.Stack;
public class DoubleLinkedList {
//初始化头结点
private Player2 p = new Player2(0,"");
public Player2 getP() {
return p;
}
//显示整个链表
public void show(){
//判断链表是否为空
if(p.next==null){
System.out.println("链表为空");
return;
}
//定义一个辅助头结点
Player2 temp = p.next;
//遍历链表
while (temp!=null){
System.out.println(temp);
temp = temp.next;
}
}
//添加方法二:按顺序添加,并且添加编号相同的数据时提示添加错误
public void addByNo(Player2 player){
//定义一个零时的头结点
Player2 temp = p;
while (temp!=null){
if (player.no < temp.no){
temp.pre.next = player;
player.pre = temp.pre;
temp.pre = player;
player.next = temp;
break;
}else if (temp.no == player.no){
System.out.println("球员已经存在,不能加入" + temp.no + temp.name);
break;
}
if (temp.next==null){
temp.next =player;
player.pre = temp;
break;
}
temp = temp.next;
}
}
//根据编号修改球员信息
public void updateByNo(Player2 player){
//判断链表是否为空
if (p.next==null){
System.out.println("链表为空");
return;
}
Player2 temp = p.next;
boolean flag = false;
while (true){
if(temp.next==null){
break;
}
if(temp.no==player.no){
flag = true;
break;
}
temp = temp.next;
}
if(flag){
temp.name= player.name;
}else {
System.out.println("没有找到改球员");
}
}
//根据编号删除节点
public void deleteByNo(int no){
//判断链表是否为空
if (p.next==null){
System.out.println("链表为空");
return;
}
Player2 temp = p.next;
boolean flag = false;
while (true){
if(temp==null){
break;
}
if(temp.no==no){
flag = true;
break;
}
temp = temp.next;
}
if (flag){
temp.pre.next = temp.next;
if(temp.next==null){
temp.pre.next = null;
}else {
temp.next.pre = temp.pre;
}
}else {
System.out.println("没有找到改球员");
}
}
}
DoubleLinkedListDemo测试类
package com.study.linkedlist;
public class DoubleLinkedListDemo {
public static void main(String[] args) {
DoubleLinkedList doubleLinkedList = new DoubleLinkedList();
doubleLinkedList.addByNo(new Player2(11,"欧文"));
doubleLinkedList.addByNo(new Player2(34,"字母哥"));
doubleLinkedList.addByNo(new Player2(23,"詹姆斯"));
doubleLinkedList.addByNo(new Player2(24,"科比"));
doubleLinkedList.addByNo(new Player2(13,"哈登"));
// doubleLinkedList.addByNo(new Player2(13,"哈登"));
// doubleLinkedList.updateByNo(new Player2(13,"123"));
// doubleLinkedList.deleteByNo(34);
doubleLinkedList.show();
}
}
部分测试结果
2、总结
2.1、初始化头结点
//初始化头结点
private Player2 p = new Player2(0,"");
public Player2 getP() {
return p;
}
2.2显示整个链表
//显示整个链表
public void show(){
//判断链表是否为空
if(p.next==null){
System.out.println("链表为空");
return;
}
//定义一个辅助头结点
Player2 temp = p.next;
//遍历链表
while (temp!=null){
System.out.println(temp);
temp = temp.next;
}
}
2.3、添加节点(按顺序添加,并且添加编号相同的数据时提示添加错误)
//添加方法二:按顺序添加,并且添加编号相同的数据时提示添加错误
public void addByNo(Player2 player){
//定义一个零时的头结点
Player2 temp = p;
while (temp!=null){
if (player.no < temp.no){
temp.pre.next = player;
player.pre = temp.pre;
temp.pre = player;
player.next = temp;
break;
}else if (temp.no == player.no){
System.out.println("球员已经存在,不能加入" + temp.no + temp.name);
break;
}
if (temp.next==null){
temp.next =player;
player.pre = temp;
break;
}
temp = temp.next;
}
}
2.4、修改节点
//根据编号修改球员信息
public void updateByNo(Player2 player){
//判断链表是否为空
if (p.next==null){
System.out.println("链表为空");
return;
}
Player2 temp = p.next;
boolean flag = false;
while (true){
if(temp.next==null){
break;
}
if(temp.no==player.no){
flag = true;
break;
}
temp = temp.next;
}
if(flag){
temp.name= player.name;
}else {
System.out.println("没有找到改球员");
}
}
2.5、删除节点
//根据编号删除节点
public void deleteByNo(int no){
//判断链表是否为空
if (p.next==null){
System.out.println("链表为空");
return;
}
Player2 temp = p.next;
boolean flag = false;
while (true){
if(temp==null){
break;
}
if(temp.no==no){
flag = true;
break;
}
temp = temp.next;
}
if (flag){
temp.pre.next = temp.next;
if(temp.next==null){
temp.pre.next = null;
}else {
temp.next.pre = temp.pre;
}
}else {
System.out.println("没有找到改球员");
}
}