线性表的顺序实现

来源:互联网 发布:小米手环2淘宝50天预发 编辑:程序博客网 时间:2024/04/28 07:29

#include   <stdio.h>
#include   <stdlib.h>

/*   函数结果状态代码   */
#define   TRUE 1
#define   FALSE 0
#define   OK         1
#define   ERROR 0
#define   INFEASIBLE -1             //不可实行
#define   OVERFLOW -2             //溢出

/*   STATUS是函数的类型,其值是函数结果状态代码   */
typedef   int   STATUS;

typedef   int   ELEMTYPE;

/*   线性表的动态分配顺序存储结构   */
#define   LIST_INIT_SIZE 100 //线性表存储空间的初始化分配量
#define   LISTINCREMENT 10 //线性表存储空间的分配增量

typedef   struct   {
ELEMTYPE   *   elem; //存储空间基址
int   length; //当前长度
int   listsize;                 //当前分配的存储容量(以sizeof(ELEMTYPE)为单位)
}SqList;

#define   NUM  5
/****************************************************************
构造一个空的线性表,并将每个元素初始化为0.
        成功返回OK,失败返回OVERFLOW.
  ****************************************************************/
STATUS   InitList_Sq(SqList   *L)
{
L-> elem   =   (ELEMTYPE   *)   malloc(LIST_INIT_SIZE   *   sizeof(ELEMTYPE));
if(!L-> elem)         return   OVERFLOW;         //存储分配失败


L-> length   =   0; //空间长度为0
L-> listsize   =   LIST_INIT_SIZE; //初始存储容量

return   OK;
}
/****************************************************************
测试函数(main函数)
*****************************************************************/
void main()
{
SqList   L;

int   i;

//测试初始值
InitList_Sq(&L);
printf( "测试初始值/t/tlength   =   %d/n ",   L.length);
for(i   =   0;   i   <   NUM;   i++)
printf( "elem[%d]   =   %d     ",   i,   L.elem[i]);
printf( "/n/n ");

 

 

}