链式储存(1)

建立一个单链表

  • 链式储存定义:不要求在逻辑上相邻的元素在物理位置上也相邻。(即利用指针来建立元素与其前驱和后继的关系)
  • 链式储存分为单链表,双链表和循环链表。(我们这里讨论单链表的情况)
单链表

每个结点只含有一个链域(指针域)的链表。即利用单链域的方式存储线性表的逻辑结构。
单链表 SLinklist< T >
在这里插入图片描述其中每一个结点SNode< T >都包含一个data(数据域(< T >类型))和一个next(指针域,指向后继结点的指针)

所以想要构造单链表,就要对其中的每一个结点进行封装。其中一共包括结点内的数据和访问下一个结点的指针,以及定义这两个属性的方法。

在这里插入图片描述
具体代码如下:

    public class SNode<T>where T :IComparable<T>//因为后面还需要对ILinklist进行访问,所以对于T加一个约束
    {
        public T Data { get; set; }//数据部分
        public SNode<T> Next { get; set; }//指针部分
        public SNode(T data)
        {
            Data = data;
            Next = null;
        }
        public SNode(T data,SNode<T> next)
        {
            Data = data;
            Next = next;
        }
    }

完成了对结点SNode< T >的封装,接下来需要构造一个SLinklist< T >的类型去实现之前的那个ILinklist< T >的接口。
在这里插入图片描述

在顺序表SeqList< T >中我们定义了一个T类型的_dataset数组,而这个单链表中只需要记录链表的长度和定义一个头结点指针就可以完成。同理,这个SLinklist< T >也需要访问T类型的接口。
具体代码如下:

在这里插入图片描述

然后在主函数下写一个单链表,我们来测试一下这个链表的完成性!

在这里插入图片描述
达到了预期的目标,输出的与预想的一致。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值