该文中主要采用顺序存储来完成对线性表的各项操作,通过动态分配的一维数组来实现,主要包括初始化、插入、删除、取第i个数据元素、定位、销毁、合并两个有序表以及在有序表中添加元素依旧保持其有序。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define LIST_INIT_SIZE 100
#define lISTINCREMENT 10
typedef int ElemType;
typedef int Status;
typedef struct SqList
{
ElemType *elem;//存储空间基址
int length;//当前长度
int listsize;//当前的存储容量
}SqList;
Status InitList(SqList *L)//初始化
{
L->elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)
exit(OVERFLOW);//存储分配失败
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}
Status DestroyList(SqList *L)//销毁表
{
if(L->elem!=NULL)
{
free(L->elem);
L->elem=NULL;
L->length=0;
L->listsize=0;
}
printf("Destroy List\n");
return OK;
}
Status ListInsert(SqList *L,int i, ElemType e)//插入
{
if(i<1||i>L->length+1</