java中的链表

建立链表的关键是如何将节点联系起来。

链表是一种数据结构,首先,我们拿链表与数组比较一下。

数组:定义时长度固定(在内存中也是连续的),有下标,不能任意删除某个元素

链表:长度不固定(可以根据需要申请内存),没有下标,可以根据需要删除

C中的链表是通过指针来把相邻的节点联系起来的,也就是前一个节点通过指针来保存下一个节点的地址,所以如

果能得到头结点,就能得到下一个节点,得到下一个节点,就能得到下下个节点,依次类推,就能得到链表的所有

内容。

java中的链表,java中没有指针,所以它不能使用指针来保存下一个节点的地址,但是我们可以保存下一个节点对

象,这种方法叫做引用。首先我们要定义好一个节点类,我的定义如下:

public class LinkNode {
  private Object obj;//节点内的数据对象
  private LinkNode child;//保存对下一个节点的引用
private LinkNode parent;//保存对上一个节点的引用
  //重写构造方法,保证在创建对象的时候必须赋值
  public LinkNode(Object obj){
  this.obj=obj;
  }

 

//获得元素,添加子节点、父节点的方法
  public void setObj(Object obj){//修改里面元素的方法
  this.obj=obj;
  }
  public Object getObj(){//获得节点元素的方法
  return obj;
  }

public void setChild(LinkNode child){//设置下一个节点的方法           this.child=child;
  }
  public LinkNode getChild(){//获得下一个节点的方法
  return child;
  }

public void setParent(LinkNode parent){//设置上一个节点的方法
  this.parent=parent;
  }
  public LinkNode getParent(){//获得上一个节点的方法
  return parent;
  }

}

 

当然你可一个里面的数据类型定义为泛型,这样就能把它的使用范围扩大。

上面的类只是一个节点,而不是一个链表,也就相当鱼c中的结构体,要把它联系起来,我们不妨再定义一个链表

类。我的定义如下:

 

public class LinkList {
//定义指向首节点和尾节点的属性
private LinkNode first=null;
private LinkNode last=null;

/**
* 往链表后面添加元素
* @param obj要添加的元素
*/

public void addNode(Object obj){
      //创建一个节点
    LinkNode newnode=new LinkNode(obj);
      //如果还没有节点,则把当前节点作为第一个节点
      if(first==null){
         first=newnode;//当前节点为首节点
         last=newnode;//当前节点也为尾节点
      }else{
    //判断下一个节点是否为尾节点
      LinkNode node=first;
      while(node.getChild()!=null){//下一个节点为null是循环结束
     
      node=node.getChild();//取下一个节点
      }

node.setChild(newnode);//把要插入的节点作为下一个节点
      newnode.setParent(node);//把这个节点作为父节点
      last=newnode;
      }
    }
   //一般链表还应该有增加,删除,修改,查找的功能,上面我只写了它增加的方法你    们 可以根据需要写更多的方法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值