线性表中顺序表的类型定义

#define MAXSIZE 100 //最大长度,即该顺序表最长有100个元素
typedef struct
{
   ElemType *elem; //指向数据元素的基地址(理解为顺序表的开头)
   int length; //线性表的当前长度
}SqList; //顺序表的名称
L.elem=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);

一些常见的问题

1. 为什么需要 ElemType *elem;?​

​(1) 顺序表的本质是动态数组​

顺序表的核心特点是 ​​用一段连续的物理内存存储数据​​,类似于数组。但普通数组(如 ElemType elem[100];)的大小是固定的,而顺序表通常需要 ​动态调整容量​(例如 malloc 动态分配内存),因此必须使用 ​​指针​​ 来管理这块内存。

​(2) ElemType *elem; 的作用​

  • elem 是一个指针​​,指向顺序表存储数据的​首地址​(即动态数组的开头)。
  • 通过 elem,可以访问顺序表中的所有元素(如 elem[0]elem[1] 等)。
  • 由于顺序表的长度可能变化(length),而最大容量固定(MAXSIZE),elem 指向的内存空间是动态分配的,而非静态数组。

2. L.elem = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE); 解析​

  • sizeof(ElemType)​:计算单个元素的大小(如 int 占 4 字节)。
  • MAXSIZE​:顺序表的最大容量(如 100)。
  • malloc​:分配 MAXSIZE * sizeof(ElemType) 字节的内存块。
  • (ElemType*)​:强制转换为 ElemType* 类型,因为 malloc 返回 void*
  • L.elem​:将分配的内存首地址赋给 elem,此时 elem 指向一块连续的、可存储 MAXSIZE 个 ElemType 元素的内存。

一个例子:图书管理系统

#define MAXSIZE 10000 //图书表可能达到的最大长度
//图书信息定义
typedef struct
{
    char no[20]; //图书ID
    char name[50]; //图书名字
    float price; //图书价格
}Book;
//图书表
typedef struct
{
    Book *elem; //存储空间的基地址
    int length; //图书表中当前的图书个数
}SqList;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值