单链表节点类描述如下
public class Node {
public Object data; //存放节点值
public Node next; //后继节点的引用 ,将data,next定义为public类型,就不需要get,set方法了
public Node(){
this(null,null); //无参时构造函数
}
public Node(Object data){ //带一个参数时的构造函数
this.data=data;
}
public Node(Object data,Node next){ //带两个参数时构造函数
this.data=data;
this.next=next;
}
}
单链表类的描述
public class Linklist {
private Node head; //单链表的头指针
public Linklist(){ //单链表构造函数
head=new Node(); //初始化头结点
}
public void clear(){ //将一个已经存在的带头结点的单链表置成空表
head.next=null;
head.data=null;
}
public boolean isEmpty(){ //判断带头结点的单链表是否为空
return head.next==null;
}
public int length(){ //求带头结点单链表的长度
int length=0;
Node p=head.next;
while(p!=null){
p=p.next;
length++;
}
return length;
}
public Object get(int i)throws Exception{ //查找带头结点的单链表中的第i个结点
int j=0;
Node p=head.next;
while(j
p=p.next;
j++;
}
if(j>i||p==null)
throw new Exception("查找位置不合理");
return p.data;
}
public int indexof(Object x){ //在带头结点的单链表中查找值为x的结点
int j=0;
Node p=head.next;
while(p!=null&&!p.data.equals(x)){
p=p.next;
j++;
}
if(p!=null)
return j;
else
return -1;
}
public void insert(int i,Object x)throws Exception{ //在带头结点的单链表中的第i个结点之前插入值为x的新结点
Node p=head;
int j=0;
while(j
p=p.next;
j++;
}
if(j>i||p==null)
throw new Exception("插入位置不合理");
Node s=new Node(x);
s.next=p.next;
p.next=s;
}
public void remove(int i)throws Exception{ //删除带头结点的单链表中第i个结点
Node p=head; //p一定要等于head;不能等于head.next
int j=0;
while(p.next!=null&&j
p=p.next;
j++;
}
if(j>i||p.next==null)
throw new Exception("删除位置不合理");
p.next=p.next.next;
}
public void display(){ //输出单链表中所有结点
Node p=head.next;
while(p!=null){
System.out.print(p.data+" ");
p=p.next;
}
System.out.println();
}
//测试用例,实现单链表增删改查功能
public static void main(String[] args)throws Exception{
Linklist L=new Linklist(); //创建一个空的链表
for(int i=0;i<5;i++)
L.insert(i,i);
System.out.println("输出单链表");
L.display();
System.out.println("查找单链表中第2个位置元素");
System.out.println(L.get(2));
System.out.println("查找单链表中元素是2的位置");
System.out.println(L.indexof(2));
System.out.println("删除单链表中第2个位置元素");
L.remove(2);
System.out.println("删除成功");
L.display();
}
}
---------------------
作者:benzhaohao
来源:CSDN
原文:https://blog.csdn.net/benzhaohao/article/details/78212827
版权声明:本文为博主原创文章,转载请附上博文链接!