数据结构——线型关系

一、定义:

逻辑关系:首元素没有直接前驱,尾元素没有直接后继,其余元素有且只有一个直接前驱和直接后继。

具体分类:表,栈(先进后出),队列(先进先出)

存储关系:顺序表,链表,顺序栈,链式栈,顺序队列,链式队列。

二、顺序表和链表:

顺序表:以数组形式保存的线性表。以下标进行引用。

链表:链式存储,以节点方式链接,节点中保存当前节点的数据和下一节点的位置。

          增加:分为头插和尾插两种方式

                 头插:从头部插入,头插可以在除了尾部之后的任意位置进行插入。

                           头插可以代替尾插(即在NULL前插入)

                  具体操作如下:

step1:通过头节点H移动到需要插入节点的上一个节点;

step2:将插入节点的next指向当前头节点的next,即完成红线1;

step3:将当前头节点的next指向插入节点,即完成红线2,断开黑线1,完成节点的插入;

尾插:从尾巴插入,只能在末尾插入。

具体操作如下:

step1:通过头节点移动到最后一个节点的位置。

step2:将当前头节点的next指向插入节点,完成红线1。

step3:将插入节点的next指向NULL。

头插和尾插:

  头插可以代替尾插,而尾插不能代替头插。头插可在任意位置插入,而尾插不行。所以我们一般使用头插。

 删除:具体操作如下:

step1:通过头节点找到要删除节点的前一个节点;

step2:用p记录要删除节点的位置;

step3:当前头节点的next指向p的next,完成红线;

step4:释放删除节点的空间,完成删除。

顺序表和链表的优缺点:

顺序表:通过下标访问元素。方便查找,修改。但是增加和修改需要元素移动位置,不方便。

链表:通过节点方便插入和删除空间灵活,但是查找和修改不方便,遍历比顺序慢(因为空间可能不连续)。

二、顺序栈和链式栈:

   顺序栈:定长,不灵活。但是操作简单,效率高。

   链式栈:长度灵活,效率相对没那么高。

  其增删改查与顺序表,链式表异曲同工,只是数据具有栈先进后出的特点。

三、顺序队列和链式队列:

   顺序队列/循环队列:定长不灵活,操作简单,效率高。

   链式队列:长度灵活,效率相对没有那么高。

   其增删改查与顺序表,链式表异曲同工,只是数据具有队列先进先出的特点。

四、循环链表和双向链表:

循环链表:由于链表只保存节点的下一个节点的位置,所以无法通过当前位置访问其前面的内容。将尾节点的next指向头节点,首尾相连,就可以通过循环的方式访问当前节点前面的节点。

双向链表:每个节点包含两个指针域,一个指向上一个节点,一个指向下一个节点,就可以实现链表的双向访问。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值