public class SinglelinkQueueDemo {
public static void main(String[] args) {
SinglelinkQueue queue = new SinglelinkQueue();
AllianceNode node1 = new AllianceNode(1, "压缩");
AllianceNode node2 = new AllianceNode(2, "永恩");
AllianceNode node6 = new AllianceNode(6, "刀妹");
AllianceNode node3 = new AllianceNode(3, "老鼠");
queue.add(node1);
queue.add(node2);
queue.show();
System.out.println("执行insert测试:");
queue.insert(node6);
queue.insert(node3);
queue.show();
System.out.println("执行update测试:");
AllianceNode node61 = new AllianceNode(6, "刀妹厉害");
queue.update(node61);
queue.show();
System.out.println("执行delete测试:");
queue.delete(2);
queue.show();
System.out.println("执行队列反转测试:");
queue.reverseShow(queue.getHead());
queue.show();
}
}
class AllianceNode{
public int id;
public String name;
public AllianceNode next; // 指向下一个节点的指针
public AllianceNode(int id,String name){
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "AllianceNode{" +
"id=" + id +
", name='" + name +
'}';
}
}
class SinglelinkQueue{
// 定义头节点
private AllianceNode head= new AllianceNode(0,"");
public AllianceNode getHead() {
return head;
}
public void setHead(AllianceNode head) {
this.head = head;
}
// 添加链表数据
public void add(AllianceNode node){
// 定义一个临时变量temp,使其指向链表尾部,然后将node放入next
AllianceNode temp = head;
while (true){
if (temp.next==null){
temp.next = node;
break;
}
temp = temp.next;
}
}
public void show(){
if (head.next==null){
System.out.println("链表为空");
return;
}
AllianceNode temp = head.next;
while (true){
if (temp==null){
break;
}
System.out.println(temp);
temp = temp.next;
}
}
// 插入
public void insert(AllianceNode allianceNode){
AllianceNode node = head;
while (true){
if (node.next==null){
node.next = allianceNode;
break;
}
if (node.next.id>allianceNode.id){
allianceNode.next= node.next;
node.next=allianceNode;
break;
}
if (node.next.id==allianceNode.id){
System.out.println("id已存在");
break;
}
node =node.next;
}
}
// 修改
public void update(AllianceNode allianceNode){
AllianceNode temp = head;
while (true){
if (temp==null){
break;
}
if (allianceNode.id==temp.id){
temp.name = allianceNode.name;;
}
temp = temp.next;
}
}
// 删除
public void delete(int id){
AllianceNode temp= head;
while (true){
if (temp.next==null){
System.out.println("未找到元素");
break;
}
if (id==temp.next.id){
temp.next = temp.next.next;
break;
}
temp =temp.next;
}
}
// 队列反转
public void reverseShow(AllianceNode node){
if (node.next==null || node.next.next==null){
return;
}
AllianceNode cur = node.next;
AllianceNode nextValue = null;
AllianceNode head = new AllianceNode(0,"");
while (cur!=null){
nextValue = cur.next; // 指针后移
cur.next = head.next; // 将head尾部所有节点放到cur的下一个节点中
head.next = cur; // 将cur放入head的头节点的末尾
cur = nextValue; // 将cur指针后移
}
node.next = head.next; // 将反转队列返回到原队列中
}
}