1、顺序表 已知 #define INITSIZE 100 /* 顺序表存储空间的初始分配量 */ typedef int ElemType; /* 数据元素类型 */ typedef struct{ ElemType *data; /* 存储空间基地址 */ int length; /* 顺序表长度(即已存入的元素个数) */ int listsize; /* 当前存储空间容量*/ }SeqList; 写出初始化操作函数(创建一个空的顺序表 L),函数的定义如下: void InitList(SeqList *L) int Locate(SeqList *L, ElemType x) /* 返回位置 */ 写出初始化操作函数(创建一个空的顺序表 L ),函数定义: void InitList(SeqList *L) 写出销毁操作函数,函数定义: void DestroyList(SeqList *L)
时间: 2025-07-10 16:58:31 浏览: 7
### 顺序表的初始化与销毁操作函数实现
在顺序表的动态存储结构中,`SeqList` 结构包含一个指向 `ElemType` 类型的指针 `data`,用于动态分配内存空间。`length` 表示当前顺序表中的元素个数,而 `listsize` 表示当前已分配的存储容量。初始化时需要为 `data` 分配初始存储空间,并将 `length` 和 `listsize` 设置为合适的值。销毁时则需释放 `data` 所占用的内存。
以下是对 `InitList` 和 `DestroyList` 函数的具体实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100 // 初始分配容量
#define LISTINCREMENT 10 // 扩容增量
typedef struct {
char no[20];
char name[50];
float price;
} Book;
typedef Book ElemType;
typedef struct {
ElemType *data; // 动态数组基址
int length; // 当前元素个数
int listsize; // 当前分配的总容量
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->data = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (!L->data) {
printf("内存分配失败\n");
exit(EXIT_FAILURE);
}
L->length = 0;
L->listsize = LIST_INIT_SIZE;
}
// 销毁顺序表
void DestroyList(SeqList *L) {
if (L->data) {
free(L->data);
L->data = NULL;
}
L->length = 0;
L->listsize = 0;
}
```
上述代码中,`InitList` 函数使用 `malloc` 为 `data` 分配初始大小为 `LIST_INIT_SIZE` 的内存空间[^5]。如果分配失败,则打印错误信息并退出程序。初始化完成后,`length` 被设置为 0,表示当前没有元素;`listsize` 被设置为 `LIST_INIT_SIZE`,表示当前分配的总容量。`DestroyList` 函数则通过调用 `free` 来释放 `data` 所指向的内存空间,并将 `data` 设为 `NULL`,以防止后续误用空指针导致程序崩溃。同时将 `length` 和 `listsize` 重置为 0,表示顺序表已被销毁。
阅读全文
相关推荐


















