数据结构与算法学习总结-线性表的链式存储与实现

  实现线性表的另一种方法时链式存储,即用指针将存储线性表中数据元素的那些单元依次串联在一起。这种方法避免了再数组中用练习的单元存储元素的缺点,因而在执行插入或删除运算时,不再需要移动元素来腾出空间或填补空缺。相应的,我们需要再每个单元中设置指针来表示表中元素之间的逻辑关系,因而增加了额外的存储空间的开销。

1.单链表

  链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个域是指向其他单元的指针,这里具有一个数据域和多个指针域的促进处单元通常称为节点(node)。

单链表节点结构
单链表结点结构

  在节点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的节点。
  在Java中没有显式的指针类型,然而实际上对象的访问就是使用指针来实现的,即在Java中是使用对象的引用来替代指针的。因此在使用Java实现该节点结构时,一个节点本身就是一个对象。节点的数据域data可以使用一个Object类型的对象来实现,用于存储任何类型的数据元素,并通过对象的引用指向该元素;而指针域next可以通过节点对象的引用来实现。
   节点接口:

public interface Node{
    //获取节点数据域
    public Object getData();
    //设置节点数据域
    public void setData(Object obj);
}

  单链表节点定义:

public class SLNode implements Node{
   
    private Object element;
    private SLNode next;
    public SLNode(){
        this(null,null);
    }
    public SLNode(Object ele,SLNode next){
        this.element = ele;
        this.netx = next;
    }
    public SLNode getNext(){
        return next;
    }
    public void setNext(SLNode next){
        this.next = next;
    }
    //节点方法
    public Object getData(){
        return element;
    }
    public void setData(Object obj){
        element = obj;
    }
}
2.双链表

  单链表的一个优点是结构简单,但是它也有一个缺点,即在单链表中只能通过一个节点的引用访问其后续节点,而无法直接访问其前驱节点,要在单链表中找到某个节点的前驱节点,必须从链表的首节点触发依次向后寻找。为此我们可以扩展单链表的节点结构,使得通过一个节点的引用,不但能够访问其后续节点,也可以方便的访问其前驱节点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值