数据结构与算法(Java实现)之 【线性表】

一、线性表及其抽象数据类型

PS:数组和链表都是线性表,只不过是存储方式不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
线性表的抽象数据模型
在这里插入图片描述

二、数组

(1)数组的3个特点

在这里插入图片描述

(2)数组的基本运算

查找

在这里插入图片描述

插入

伪代码步骤

  • 判断插入位置是否合法
  • 判断表是否已满
  • 腾出第i个位置
  • 插入e

删除

  • 判断删除位置是否合法
  • 删除e
  • 将后续元素依次往前移动

(3)评价数组

在这里插入图片描述

详细优缺点

在这里插入图片描述

三、链表

1、类型

在这里插入图片描述

2、什么是单链表

在这里插入图片描述
在这里插入图片描述

3、求单链表的长度的C语言算法

int	ListLength(LinkList L) 
{   
      Node *p; 
      p=L->next;	
      j=0;   
      while(p!=NULL)
      {	
          p=p->next; 
          j ++; 
      }
      return j;
}

4、在单链表上的基本运算

(1)新建单链表

在这里插入图片描述

在这里插入图片描述

(2)查找

每次都只能从头结点一个一个遍历下去

(3)插入

先立后破再立
在这里插入图片描述

(4)删除

也是先立后破
在这里插入图片描述

5、单链表特点

  • 空间上:
    动态链表的特点在于可动态生成,因其需用指针表示元素间的逻辑关系,故其存储密度较低
    存储密度=元素本身占用存储量 / 结点占用存储量
  • 时间上:
    动态链表的特点在于插入、删除操作时只改指针不移动元素,但不能随机存取表中元素,需顺链找;

6、循环链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、双向链表(Double Linked List)

(1)为什么需要双向链表

在这里插入图片描述

(2)示意图

在这里插入图片描述

(3)插入元素

在这里插入图片描述

(4)删除元素

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高高飞起的勇敢麦当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值