#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 5//无分号
#define LISTSIZE_INCE 10
typedef int Elemtype;
typedef int status;
typedef struct{
Elemtype *elem;//数组指针储存基址
int length;
int listsize;//当前分配的存储容量
}Sqlist;
//数据元素中各个数据项的封装
//关系与二元逻辑的表示 数据结构 返回值0或1
//逻辑结构与存储结构
status Initlist(Sqlist &L){
L.elem=(Elemtype*)malloc(LISTSIZE*sizeof(Elemtype));//malloc函数的应用
if(!L.elem){//数组中的第一个元素未使用
printf("分配内存失败!");
exit(0);
}
L.length=0;
L.listsize=LISTSIZE;
return 1;
}
status Printlist(Sqlist &L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
return 1;//函数的返回值
}
status Insertlist(Sqlist &L,int i,Elemtype e){//程序出现内存错误时会导致被windows强制终止
int j;
Elemtype *p;
p=L.elem;
if(L.length==L.listsize){
printf("顺序表已满,分配内存空间!\n");
}
L.elem=(Elemtype*)realloc(p,(L.listsize+LISTSIZE_INCE)*sizeof(Elemtype));
if(!p){
printf("分配内存失败!!");
exit(0);
}
L.elem=p;
L.length++;
L.listsize=L.listsize+LISTSIZE_INCE;
if(i<1||i>L.length ){
printf("数据不合法\n");
return(0);
}
else{
for(j=L.length-1;j>=i;j--)
{
L.elem[j]=L.elem[j-1];
}
L.elem[i]=e;
return 1;//函数的返回值