线性表的顺序存储结构就是利用数组,动态数组更方便些,以下用的动态数组
#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
#define ElemType int
#define OK 1
#define ERROR 0
typedef struct
{
ElemType *elem;//存放分配地址的首地址,类似于数组的首地址
int length; //存放数组的长度
int listsize; //数组的总长度
}SqList, *pList;
//构造一个空的线性表
int InitList_Sq(SqList &L)
{
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if( ! L.elem) //存储分配失败
{
return ERROR;
}
L.length = 0; //数组初始状态长度为0
L.listsize = LIST_INIT_SIZE; //数组初始状态总长度
return OK;
}
//在顺序线性表L中第i个位置之前插入新的元素e
//i的值必须符合1 《= i 《= ListLength_Sq(L)+1
int ListInsert_Sq(SqList &L,int i,ElemType e)
{
int *q,*p; //设置p q 为int型指针变量
ElemType *newbase;
if(i < 1 || i > L.length+1) //i值不合法的情况
{
return ERROR;
}
if(L.length &g