package LinkedList;
/*
* 模拟创建单链表和插入数据 打印链表等操作
* 按照顺序插入节点
* @auhtor bxh
*/
public class SingleLinkedList {
public static void main(String[] args) {
Single_LinkedList linkedList = new Single_LinkedList();
// linkedList.addnode(new HeroNode(1, "骆子豪", "大骡"));
// linkedList.addnode(new HeroNode(2, "徐晨", "四号骡"));
// linkedList.addnode(new HeroNode(3, "马诗佳", "five骡"));
// linkedList.addnode(new HeroNode(4, "戴容江", "小骡"));
// linkedList.addnode(new HeroNode(5, "谢康", "最骡"));
// linkedList.show();
System.out.println("===========================");
linkedList.addbyorder(new HeroNode(3, "马诗佳", "five骡"));
linkedList.addbyorder(new HeroNode(2, "徐晨", "四号骡"));
linkedList.addbyorder(new HeroNode(4, "戴容江", "小骡"));
linkedList.addbyorder(new HeroNode(1, "骆子豪", "大骡"));
linkedList.addbyorder(new HeroNode(5, "谢康", "最骡"));
linkedList.show();
}
}
/*
* 创建单链表 实现插入节点的操作
*/
class Single_LinkedList{
//创建一个头结点
HeroNode head=new HeroNode(0,"","");
//创建方法添加节点
public void addnode(HeroNode node) {
if(head.next==null)
{
head.next=node;
} //如果单链表中此时只有头结点,则直接将信赖的结点插入头结点之后
else {
HeroNode temp=head;
while(temp.next!=null) {
temp=temp.next;
} //循环遍历找到链表尾部最后一个节点
temp.next=node;
//尾部插入新进来的节点
System.out.println("节点插入成功");
}
}
public void addbyorder(HeroNode node) {
//按照顺序插入新的节点 按照id的大小顺序排序
//主要是要找到待插入位置的前一个节点
HeroNode temp = head; //辅助变量
if(head.next==null)
{
head.next=node;
System.out.println("节点"+node.name+"插入成功");
return;
} //如果单链表中此时只有头结点,则直接将信赖的结点插入头结点之后
while(temp.next!=null&&temp.next.id<node.id)
{
temp=temp.next; //往下遍历下一个节点
}
if(temp.next==null) //判断是否是链表到结尾了 两种情况要分别考虑 实现方法不一样
{
temp.next=node;
node.next=null;
}
else {
node.next=temp.next;
temp.next=node; //将节点插入temp节点之后 使之按照顺序排列
}
System.out.println("节点"+node.name+"插入成功");
}
//打印单链表的节点情况
public void show() {
HeroNode temp=head.next;
System.out.println("现在开始打印节点:");
while(temp!=null)
{
System.out.println(temp);
temp=temp.next;
}
}
}
/*
* 创建英雄节点 每一个 节点英雄都有编号 姓名 和昵称
*/
class HeroNode{
public int id;
public String name;
public String nickname;
public HeroNode next; //节点中指向下一个节点的指针
public HeroNode(int id,String name, String nickname) {
// TODO Auto-generated constructor stub
this.id=id;
this.name=name;
this.nickname=nickname;
}
@Override
public String toString() {
return "HeroNode [id=" + id + ", name=" + name + ", nickname=" + nickname + "]";
}
}