总结:静态顺序链表不需要用到malloc方法直接用固定数组就好
//宏定义
#include <stdio.h>
#define Status int
#define OK 1
#define ERROR 0
#define ElemType int
#define MAX_SIZE 1000
//存储结构
typedef struct{
ElemType elem[MAX_SIZE];
int length;
}SqList;
//初始化
Status InitSqList(SqList *L){
L->length=0;
return OK;
}
//插入
Status ListInsert(SqList *L,int i,ElemType e){
if(L->length >= MAX_SIZE)
{
printf("操作失败,顺序表已满\n");
return ERROR;
}
if(i < 1 || i > L->length+1)
{
printf("操作失败,请检查插入位置!\n");
return ERROR;
}
for(int j = L->length-1; j >= i-1; --j)
{
L->elem[j+1] = L->elem[j];
}
L->elem[i-1] = e;
L->length++;
return OK;
}
//删除
Status ListDelete(SqList *L,int i,ElemType *e)
{
if(i < 1 || i > L->length)
{
printf("操作失败,删除位置错误!\n");
return ERROR;
}
(*e) = L->elem[i-1];
for(; i < L->length; ++i)
{
L->elem[i-1] = L->elem[i];
}
L->length--;
return OK;
}
//输出打印
void ListPrint(SqList L)
{
int i;
for(i = 0; i < L.length; ++i)
{
printf("%d ", L.elem[i]);
}
printf("\n");
}
//一些测试
int main(void){
SqList L;
ElemType e;
InitSqList(&L);
ListInsert(&L,1,1);
ListInsert(&L,1,2);
ListDelete(&L,1,&e);
ListInsert(&L,1,3);
ListPrint(L);
return 0;
}