王道数据结构第二章—线性表

线性表是一种具有相同数据类型的元素有限序列,包括逻辑结构和存储结构两方面。逻辑结构表现为一对一的相邻关系,而存储结构可以是顺序表或链表。顺序表在物理位置上保证了逻辑相邻的元素相邻存储,可以采用静态或动态分配方式。动态分配允许在需要时扩展存储空间。
摘要由CSDN通过智能技术生成

什么是线性表?

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列

1.线性表(逻辑结构)的存储结构分为顺序表和链表

  • 线性表是具有相同类型的n个数据元素的有穷集合--是一种逻辑结构
  • 线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,二者属于不同的层面概念
  • 线性表(逻辑结构)对应的存储结构分别为顺序表、链表

2.线性表的特点

  • 表中的元素的个数有限(有限性
  • 表中的元素都有先后顺序(有序性
  • 表中的元素都相同的存储空间,因为表中的袁术数据类型都相同

线性表的顺序存储结构

顺序表,用一组物理地址连续的存储单元依次存储线性表中的数据元素,从而使逻辑上相邻的元素物理位置也相邻。表中的逻辑位置与物理位置相同(线性表位序从1开始,数组下表从0开始)

顺序存储两种描述方式:

1.静态分配方式

#define Maxsize 10
typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList;

静态分配时,数组的大小已经固定,一旦空间占满,再插入新数据就会溢出。

 2.动态分配方式

#define IniSize 100    //初始定义表长度
typedef struct{
    ElemType *data;    //动态分配数组的指针
    int MaxSize,length;//数组最大容量和当前个数
}SqList;

动态分配时候,存储数组的大小固定,满了之后可申请更大的存储空间从而替换以前的存储空间,把以前的数据放入再继续输入新的数据,以起到扩充的作用

  • C的初始动态分配语句:L.data = (ElemType*)malloc(sizeof(ElemType)* InitSize);
  • C++的初始动态分配语句:L.data = new ElemType(InitSize);
  • PS:动态分配不是链式存储,它同样属于顺序存储结构,物理结构没有变化,依然是随机存取方式,只是分配时的大小可以在运行时决定。

今天先记录到这,清明之后做完

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值