java创建单链表_java创建单链表及增删改查功能实现

单链表节点类描述如下

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

版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值