找回了好久不用的账号,还是有些怀念。。。
2.2线性表的顺序表示和实现(1)
通常用数组描述数据结构中的顺序存储结构。在此,由于线性表的长度可变,且所需的最大存储空间随问题的不同而不同,则在C语言中可用动态分配的一维数组:
//----------线性表的动态分配顺序存储结构------------
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
typedef struct
{
ElemType *elem; //存储空间基址 //ELemType-一种伪代码 泛指各种数据类型
int length; //当前长度
int listsize; //当前分配的存储容量(以sizeof(ELemType)为单位)
} SqList;
下面需要定义一Status函数类型,需对其进行类型的描述,预定义常量和类型:
//函数的结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//Status 是函数的类型 其值是函数的状态代码
typedef int Status; //重命名 赋予现有类型名一个新名字
构造一个空的线性表
Status InitList_Sq (SqList &L)
{
L.elem=(ElemType *)/*数据类型强制转换*/malloc(LIST_INIT_SIZE*sizeof(ElemType));//分配内存
if(!L.elem)
{
exit(OVERFLOW);//存储分配失败 退出程序
}
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;
return OK;
}
创建完成。
注:上述代码均为方便教学所用的伪代码。