线性表的顺序存储

一、 定义

     线性表的顺序表示又称为顺序存储结构顺序映像

     顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

注意:

1. 线性表的第一个数据元素a1的存储位置,称作线性表的起始位置基地址

2. 依次存储,地址连续 ----中间没有空出存储单元。

二、 顺序表中元素存储位置的计算

      假设线性表的每个元素需占l个存储单元,则第i+1个数据元素的存储位置和第i个数据元素的存储位置之间满足关系:

                    LOC(ai+1) = LOC(ai) + l

     由此,所有数据元素的存储位置均可由第一个数据元素的存储位置得到:

                  LOC(ai) = LOC(a1) + (i-1) x l

三、 顺序表的顺序存储表示

       用一变量表示顺序表的长度属性

#define LIST_INIT_SIZE 100   //线性表存储空间的初始分配量
typedef struct{
     ElemType elem[LIST_INIT_SIZE];//数组
     int length;//当前长度
}SqList;

     应用举例:

  多项式的顺序存储结构类型定义

#define MAXSIZE 1000   //多项式可能达到的最大长度


typedef struct{
    float p;   //系数
    int e;     //指数
}Polynomial;

typedef struct{
  Polynomial *elem;  //存储空间的基地址
  int length;      //多项式中当前项的个数
}SqList;    //多项式的顺序存储结构类型为SqList

   图书表的顺序存储结构类型定义

#define MAXSIZE 1000  //图书表可能达到的最大长度

typedef struct{
    char no[20];    //图书ISBN
    char name[50];  //图书名字
    float price;    //图书价格
}Book;

typedef struct{
   Book *elem;  //存储空间的基地址
   int length;  //当前图书个数
}SqList;

四、 顺序表的两种存储方式

    逻辑结构存储到存储结构时,逻辑位序和物理位序相差1

静态存储

#define MAXSIZE 100
typedef struct{
    ElemType elem[MAXSIZE];
    int length;
}SqList;

动态存储

typedef struct{
    ElemType *elem;
     int length;
}SqList;
L.elem = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
  1. 其中sizeof后面的*是乘法的意思。
  2. SqList L;//定义变量L,L是 SqList 这种类型的,L是个顺序表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值