链表

1. 链表是以节点的方式来存储的  2.链表的每个节点 有data域(放数据的域),next域 (指向它的下一个节点)      

头节点150指向 150的data,而150的next域指向110  ,110->180   3. 并不一定是连续存储的  4.链表分带头节点的和无头节点的链表

链表   链表 

好友的id号发过去 按照编号的顺序返回 

逻辑存储 因为非连续,逻辑连续                         水浒传英雄排名 用链表来实现 带头节点

 

链表                              链表 

单链表创建示意图 ,显示单向链表的分析 

头节点指向第一个节点

 

链表

 

                     需要一个辅助指针指向头节点链表

 

 总有next指向下一个, 所以不要打印next链表

 

 链表  

问题所在, 现在打印的顺序是按照add添加的顺序打印的

链表

 

 

 代码如下 单向链表的实现 

public class SingleLinkedListdemo {

public static void main(String[] args) {
//先创建节点
HeroNode heroNode1 = new HeroNode(1, "松江", "及时雨");
HeroNode heroNode2 = new HeroNode(2, "卢俊义", "玉麒麟");
HeroNode heroNode3 = new HeroNode(3, "吴用", "智多星");
HeroNode heroNode4 = new HeroNode(4, "林冲", "豹子头");
//加入 创建链表
SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.add(heroNode1);
singleLinkedList.add(heroNode4);
singleLinkedList.add(heroNode2);
singleLinkedList.add(heroNode3);
//显示
singleLinkedList.showLinkNode();
}
}
//定义SingleLinkList
class SingleLinkedList{
//先初始化一个头节点 不能动 不存放具体数据 只找到下一个节点位置
private HeroNode head = new HeroNode(0,"","");
//添加节点到单向链表 当不考虑编号顺序时,找到当前链表的最后节点,将最后的这个节点的next 指向新的节点
public void add(HeroNode heroNode){
//头节点不能动, 需要辅助变量(指针)
HeroNode temp = head;//头节点的属性自带next 本身也是节点
//遍历链表,找到最后
while (true) {//如果.next为空,即找到结尾
if (temp.next == null) {
break;//已经到最后了
}//如果没有找到,就将temp后移动相当于temp指针往后直到next==null
temp =temp.next;
}//当推出while循环时,temp就指向了来年表的最后
//将最后这个节点的next,指向新的节点
temp.next=heroNode;
}
public void showLinkNode(){//需要一个辅助变量,帮助遍历真个链表
if(head.next==null){
return;
}//因为头节点不能动,所以需要辅助变量
HeroNode temp = head.next;
while (true) {
//判断是否是链表的最后
if (temp == null) {
break;
}
System.out.println(temp);
temp=temp.next;
}

}
}
class HeroNode{
//属性和节点信息,每个heronode就算一个节点
public int no;
public String name;
public String nickName;
public HeroNode next;

public HeroNode(final int no, final String name, final String nickName) {
this.no = no;
this.name = name;
this.nickName = nickName;
}

@Override
public String toString() {
return "HeroNode{" +
"no=" + no +
", name='" + name + '\'' +
", nickName='" + nickName + '\'' +
'}';
}
}
上一篇:单链表相关操作【java】


下一篇:单链表的创建