#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(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;
}//InitList_sq
Status ListInsert_Sq(SqList &L, int i, ElemType e) {
if (i < 1 || i >L.length + 1)return ERROR;
if (L.length >= L.listsize) {
ElemType *newbase;
newbase = (ElemType *)realloc(L.elem,
(L.listsize + LISTINCREMENT) * sizeof(ElemType));
if (!newbase)exit(OVERFLOW);
L.elem = newbase;
L.listsize += LISTINCREMENT;
}
int *q, *p;
q = &(L.elem[i - 1]);
for (p = &(L.elem[L.length - 1]); p >= q; --p)* (p + 1) = *p;
*q = e;
++L.length;
return OK;
}//ListInsert_sq
Status ListDelete_Sq(SqList &L, int i, ElemType e) {
if ((i < 1) || (i >L.length))return ERROR;
ElemType *q, *p;
q = &(L.elem[i - 1]);
e = *p;
q = L.elem + L.length - 1;
for (++p; p <= q; ++p)* (p + 1) = *p;
--L.length;
return OK;
}//ListDelete_Sq
Status CreatList(SqList &L) {
int a[4] = { 3,6,9,2 };
for (int j = 0; j < 4; j++)
{
ListInsert_Sq(L, j + 1, a[j]);
}
return OK;
}
void Print(SqList &L)
{ //打印顺序表的数据元素
printf("输出顺序表:\n");
for (int i = 0; i<L.length; i++)
printf("%d\n", L.elem[i]);
}
void main() {
SqList wsa;
InitList_Sq(wsa);
printf("初始化顺序表的长度%d: \n", wsa.length);
printf("创建固定数据元素的顺序表:\n", wsa.length);
CreatList(wsa);
Print(wsa);
ListInsert_Sq(wsa, 2, 56);
printf("在位序为2处插入56:\n", wsa.length);
Print(wsa);
int m;
ListDelete_Sq(wsa, 3, m);
printf("删除位序3的数据元素:\n", wsa.length);
Print(wsa);
system("pause");
CreatList(wsa);
}