package linkNode;
/**
* @author moon
* @create 2021-03-02 9:14
*/
public class MyLinked {
public static class Node{
Object data;
Node next;
}
//储存链表的头结点对象
private Node head=new Node();
//向链表的最后一个环节之后追加新元素
public void append(Object data){
//1.创建一个变量,用来遍历当前链表,直到找到当前链表中的最后一个节点,这个临时变量开始的时候指向链表的头结点
Node current=head;
//2.通过循环的方式找到当前链表的最后一个节点,循环条件就是临时变量指向节点的next指针域值不是null
while(current.next!=null){
current=current.next;
}
//循环结束之后,current变量指向的就是当前链表当中的最后一个节点了
//3.将追加的元素封装在一个Node类型的节点当中
Node node=new Node();//用来储存新元素的新节点
node.data=data;
//4.通过步骤2当中的临时变量只想的最后一个节点,将新建节点增加到链表的最后。
current.next=node;
node.next=null;
}
//向链表指定下标插入新元素
public void insert(Object data,int index){
//创建一个计步器变量,初始取值为0,用来记录current这个临时变量的跳转次数,作为查找结点插入位置循环 的参考
int step=0;
//2.创建一个名为current的临时变量,用来遍历链表中的节点,初始取值还是head节点
Node current=head;
//3.创建循环,用来找到新节点的插入位置,循环条件是step<index
while (step<index){
current=current.next;
step++;
}
//4创建新节点,用来保存插入的数据,新节点的名称定义为node
Node node=new Node();
node.data=data;
//5.执行新节点的插入操作
node.next=current.next;
current.next=node;
}
//遍历
public void iterate(){
//创建一个变量用来遍历链表中的每一个节点,这个临时变量的初始取值是head头节点
Node current=head;
//2.创建一个循环,使用循环不断改变临时变量为下一个节点,并在遍历的同时打印节点的数据取值
while (current.next!=null){
current=current.next;
System.out.println(current.data);
}
}
public static void main(String[]args){
MyLinked ml=new MyLinked();
ml.append("aa");
ml.append("ae");
ml.append("3");
ml.iterate();
System.out.print("---------------");
ml.insert("a",1);
ml.iterate();
}
}
java链表
最新推荐文章于 2024-08-17 08:59:42 发布