线性表笔记

线性表(list)

定义:

由零个或多个数据元素组成的有限序列

注意点⭐:
  1. 它是一个序列,有先后关系
  2. 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继
  3. 线性表是有限的
基本操作:
  • InitList( *L ):初始化线性表
  • ListEmpty( L ):判断线性表是否为空
  • ClearList( *L ):清空线性表
  • GetElem( L , i , *e ):获取线性表第i个位置的元素并赋值给e
  • locateElem( L , e ):判断线性表中是否有值为e的元素
  • ListInsert( *L , i , e ):在线性表中第i个位置插入值为e的元素
  • ListDelete( *L , i , *e ):删除线性表的第i个元素并赋值给e
  • ListLength(L):获取线性表的当前长度
线性表的顺序存储方式
结构定义:
#define  MAXSIZE 50 //自定义值
typedef int ElemType;
typedef struct {
    ElemType  data[MAXSIZE];
    int length; //线性表的当前长度
}SqList;
线性表的单链表存储方式
结构定义:
typedef int ElemType;
typedef struct Node {
    ElemType  data; //数据域
    struct Node * Next; //指针域
}Node;
typedef struct Node* LinkList;
顺序存储和链式存储的优缺点
1. 顺序存储
优点
  • 无须为表示表中元素之间的逻辑关系而增添额外的存储空间
  • 可以快速地访问表中任意位置的元素
缺点
  • 插入和删除元素时需要移动大量元素
  • 容易造成存储空间的“碎片”
  • 当线性表长度变化较大时,难以确定存储空间的容量
2. 链式存储
优点
  • 插入或删除元素时很方便
  • 不需要分配存储空间,只要有空间可以随意增加元素
缺点
  • 存储密度小,存储空间利用率低
3.优缺点对比
分配方式
  • 顺序存储采用的是一段连续的存储单元,依次存储线性表中的元素
  • 链式存储采用一组任意的存储单元来存储线性表中的元素
时间性能
  • 查找:顺序存储O(1),链式存储O(n)
  • 插入或删除:顺序存储O(n),链式存储O(1)
空间性能
  • 顺序存储结构需要预分配存储空间,容易造成空间浪费或者溢出等问题
  • 链式存储不需要预分配存储空间,只要有就能够分配,元素的个数也不受限制
结论
  • 若需要频繁查找元素,应该优先考虑顺序存储
  • 若需要频繁插入和删除元素,则应该优先考虑链式存储
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值