调试环境VC6.0
#include<stdlib.h>
#include<stdio.h>
typedef int Status; // Status 是函数返回值类型,其值是函数结果状态代码。
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define List_Init_Size 100 //线性表存储空间初始分配量
#define Listincerment 10 //线性表存储空间的分配增量
typedef struct SqList
{
int *elem;
int length;
int listsize; //当前分配的存储容量()
}SqList;
Status InitList_Sq(SqList*L)
{//初始化顺序线性表//
L->elem=(int*)malloc(List_Init_Size*sizeof(int));
if(!L->elem)exit(OVERFLOW); //存储分配失败
L->length=0;
return OK;
}
Status ListInsert_Sq(SqList *L, int i, int e)
{
//i位置之前插入新元素e
if(i<1||i>L->length+1)return ERROR;
if((L->length)>=(L->listsize)){
//当前存储空间已满,增加分配
int*newbase,*q,*p;
newbase=(int*)realloc(L->elem,(L->listsize+Listincerment)*sizeof(int));
if(!newbase)exit(OVERFLOW);//存储分配失败}
L->elem=newbase; //新的基址
L->listsize+=Listincerment; //增加容器容量
q=&(L->elem[i-1]); //q为插入位置
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p; //插入位置及以后的元素后移
*q=e; //插入e
++L->length;
}
return OK;}
void output(SqList L)
{
int i;
for(i=0;i<L.length;i++)
{
printf("%d ",&L.elem[i]);
}
}
void main()
{
SqList a;
int i,j;
InitList_Sq(&a);
printf("输入要写入链表a中元素的个数");
scanf("%d",&j);
printf("输入每个元素");
for(i=1;i<=j;i++) //小于等于
{
int e;
scanf("%d",&e);
ListInsert_Sq(&a,i,e);
}
output(a);
}