package com.ws.链表.单向链表.添加到尾;
//注意:在链表遍历时,要从头的下一个开始遍历:Node listNode=head.next;
// 判断是否到链表尾时是判断当前对象当前节点是否为空,以为添加了节点,要是当前节点下一个的话,就是另一个节点了
// ,而循环时已经指向下一个节点了,这是和添加节点遍历得到链表尾时是不同的
public class LinkedList {
public static void main(String[] args) {
//进行测试
//创建节点
Node node1=new Node(1,"王","小王");
Node node2=new Node(2,"李","小李");
Node node3=new Node(3,"周","小周");
Node node4=new Node(4,"马","小马");
//创建链表
NodeList nodeList=new NodeList();
//加入
nodeList.add(node1);
nodeList.add(node2);
nodeList.add(node3);
nodeList.add(node4);
//显示
nodeList.list();
}
}
//定义Node,每个Node对象就是一个节点
class Node{
public int paixu;
public String name;
public String nickname;
public Node next;//指向下一个节点
//构造器
public Node(int paixu,String name,String nickname){
this.paixu=paixu;
this.name=name;
this.nickname=nickname;
}
@Override
public String toString() {
return "Node{" +
"paixu=" + paixu +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
//创建NodeList管理Node 就是管理节点,构建链表
//单项链表
class NodeList{
//初始化一个头节点,头结点不动
private Node head=new Node(0,"","");
//添加节点到单向链表
//当不考虑编号顺序时
//1.找到当前链表的最后节点
//2.将最后节点的next指向新的节点
public void add(Node node){
//因为头结点不能动,所以要一个副本
Node listNode=head;
//遍历链表找到最后
while (true){
//当headtu.next=null找到链表最后
if (listNode.next==null){
break;
}
//如果没有找到最后,就将节点后移
listNode=listNode.next;
}
//退出while循环时,listNode就指向了链表最后
listNode.next=node;//将最后节点添加新链表
}
//遍历单向链表
public void list(){
//判断链表是否为空
if (head.next==null){
System.out.println("链表为空");
return;
}
//因为头节点不能动,所以要一个副本来遍历
Node listNode=head.next;
while (true){
//判断是否到链表最后
if (listNode==null){
break;
}
//链表不为空,输出节点信息
System.out.println(listNode);
//将节点后移listNode
listNode=listNode.next;
}
}
}
数据结构之单向链表(添加到尾部)
最新推荐文章于 2024-07-22 14:15:06 发布