顺序表-动态分配
1.头文件及类型定义
#include<stdio.h>
#include<stdlib.h> //malloc和free函数的原型在头文件<stdlib.h>中
#define InitSize 10 //定义顺序表的初始长度
#define ElemType int //定义数据元素类型
/*
02.顺序表_动态分配(malloc函数实现)
1.sizeof(类型符或变量名)
(1)当操作数为数据类型时,得到该数据类型的存储字节数
(2)当操作数为变量名时,得到变量使用的存储单元字节数
2.malloc函数的使用
(1)作用:分配一块连续的内存空间并返回所分配空间的起始地址
(2)常用格式:L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
(3)注意:使用该函数一般要判断其返回值,若返回值为NULL,则说明分配失败,程序要进行相应处理
3.free()函数
(1)释放内存空间
(2)与malloc函数是一对,malloc返回值为内存空间基址,free参数为内存空间基址
*/
2.顺序表类型定义
typedef struct SeqList {
ElemType* data; //指示动态分配数组的指针,也就是malloc函数返回的分配空间的起始地址
int MaxSize; //顺序表的最大容量
int length; //顺序表当前长度
}SeqList;
3.函数声明
/*函数声明*/
void InitList(SeqList& L); //1.初始化顺序表
int Length(SeqList L); //2.求表长
bool Empty(SeqList L); //3.判空
void IncreaseSize(SeqList& L, int len); //4.增加动态数组的长度
bool InsertList(SeqList& L, int i, ElemType e); //5.插入操作
bool ListDelete(SeqList& L, int i, ElemType& e); //6.删除操作
ElemType GetElem(SeqList L, int i); //7-1.查找操作-按位查找
int LocateElem(SeqList L, ElemType e); //7-2.查找操作-按值查找
void PrintList(SeqList L); //8.遍历
4.基本操作
4.1 初始化顺序表
//1.初始化顺序表
void InitList(SeqList& L) {
L.data = (ElemType*)malloc(sizeof(ElemType) * InitSize);
L.MaxSize = InitSize;
L.length = 0;
printf("顺序表初始化成功!\n");
}
4.2 求表长