java实现简单链表

来源:互联网 发布:mac 未能存储文稿 编辑:程序博客网 时间:2024/05/22 14:59

本链表实现的基本的增删该查功能,

package org.cn.test;
public class Node {
private int data;
public  Node next;
public Node(){

}

public Node(int data){
this.data=data;

}

public void display(){
System.out.println("data==>"+this.data);
}
public int getData(){
return this.data;
}
public void setDate(int data){
this.data=data;
}
}

以上为基本的节点vo类,接下来是正式链表的创建:

package org.cn.test;
public class MyLink {
public  Node first;//链表的头节点
public  Node last;//链表的最后一个节点
private int position=0;
public MyLink(){
this.first=null;
this.last=null;
}
public void addNode(int data){//添加节点
Node node=new Node(data);
node.next=null;
if(first==null || last==null){
first=new Node();
last=node;
first.next=last;
}
last.next=node;
last=node;
}
public int getLinkLength(Node node){//获得链表的长度
int len=0;
Node temp=first;
while((temp=temp.next)!=null){
len++;
}
return len;
}
public Node findNodeByIndex(int index){//根据索引查找节点
Node temp=first;
int len=this.getLinkLength(temp);
if(index>len){
System.out.println("要查找的下标超过了链表的长度");
return null;
}
while(position!=index){
position++;
temp=temp.next;
}
return temp;
}
public Node findNodeByDate(int data){//根据内容值查找结点
Node temp=first;
while(temp.getData()!=data){
temp=temp.next;
if(temp==null){
break;
}
}
return temp;
}
public boolean isContainData(int data){//查询链表是否包含指定的内容
boolean flag=false;
Node node=first;
while(node!=null){
if(node.getData()==data && (Integer)node.getData()!=null){
flag=true;
break;
}
node=node.next;
}
return flag;
}
public void deleteNode(int data){//删除节点
Node previous=null;
Node current=first;
boolean flag=this.isContainData(data);
if(!flag){
System.out.println("要删除的内容不存在");
return;
}
while(current.getData()!=data){
previous=current;
current=current.next;
if(current==null){
break;
}
}
previous.next=current.next;
current=null;
}
public void printNode(){//遍历链表
Node node=first;
while(node.next!=null){
node.display();
node=node.next;
}
node.display();
}
public void updateNode(int index,int data){//根据索引更新链表
Node node=first;
while(position!=index){
node=node.next;
position++;
}
node.setDate(data);
}
}



注意在删除查询的时候要查询链表是否有内容,删除索引不要超过链表的长度等等。

以下为测试类:

package org.cn.test;
public class MyLinkTest{
public static void main(String args[]){
MyLink link=new MyLink();
link.addNode(5);
link.addNode(6);
link.addNode(7);
link.addNode(8);
link.addNode(9);
link.addNode(10);
link.addNode(13);
//link.updateNode(2, 22);
//link.printNode();
Node node=link.findNodeByIndex(10);
int len=link.getLinkLength(link.first);
System.out.println("len=="+len);
if(node!=null){
node.display();
}
link.deleteNode(6);
link.printNode();
}
}


欢迎来信一起探讨,谢谢。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 行驶证过了两个多月没年检怎么办 驾照没满一年扣了3分怎么办 6年免检但是行驶证到期怎么办 驾驶证和行驶证一起丢了怎么办 身份证驾驶证行驶证一起丢了怎么办 在银行柜圆机取款时忘了取卡怎么办 中国建设银银行取款密码忘了怎么办 买到证件不全的二手电动车怎么办 光大乐惠金卡信用卡还了怎么办 增驾期间被扣3分怎么办 a2驾驶证被扣12分后怎么办 我手机换号码了驾驶证档案怎么办 手机号码换了查不到驾照分了怎么办 金牛区源泉幼儿园摇不到号怎么办 b2驾驶证被扣12分后怎么办 福建省超过一年驾照未年审要怎么办 为缓解交通拥堵现状人们应该怎么办 告对方不知道对方出身日期怎么办 上海业余围棋4进3老不过怎么办 孩子想上学但又怕同学议论怎么办 在菲律宾黑了博彩老板的钱怎么办 九阴真经3d先遣服更新失败怎么办 公司核名通过不想用了怎么办 公司核名下来了不想注册了怎么办 家人受到小贷公司催款威胁怎么办 商标抽签资料提交上去有问题怎么办 花椒直播助手苹果版下载不了怎么办 在香港酒店住把床单弄上血了怎么办 综英美我能怎么办我也很绝望百度云 护照的名字中间有个空格怎么办 开车不小心压死黄鼠狼了怎么办 三户联保贷款一方不还怎么办 因为隔断中介违约…我该怎么办 上海居住证没下来换住址了怎么办 工商注册后大股东不注资怎么办 公司不给去办理变更股东信息怎么办 滴滴车主注册没有自己的车型怎么办 代办用虚假地址注册的公司怎么办? 写字楼注册公司租户不租了怎么办 租户没把公司迁出我该怎么办 租户不肯把户口迁出了业主怎么办