顺序表

//2022.9.1 顺序表
#include<stdio.h>
#include<stdlib.h>

#define N 20
typedef struct sqlist
{
int *elem; //基地址
int length; //线性表长度
int listsize; //存储空间的大小
}sql;

//定义一个变量(顺序表)

sql L;
//初始化
void InitList()
{
L.elem=(int *)malloc(N*sizeof(int)); //获取整型需要的存储空间
if(!L.elem)
exit(0); //空间申请失败,退出
L.listsize=N; //空间大小
L.length=0; //空间长度
}
//输入
void input(int n)
{
int i;
printf("输入数组的值:");
for(i=0;i<n;i++)
scanf("%d",&L.elem[i]);
L.length=n;
}
//输出
void output()
{
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
//插入
void insertNode(int i,int e) //插入节点
{
int *p,*q,k=i;
q=L.elem+i-1;
if(k<0||k>L.length+1)
{
printf("超出范围无法插入\n");
exit(0);
}
if(L.length>=L.listsize)
{
printf("存储空间不足!!!\n");
exit(0);
/*
newbase=(int *)realloc(L.elem,(N+M)*sizeof(int)) //追加存储空间
if(!newbase)
exit(0);
L.elem=newbase:
L.listsize+=M;*/
}

for (p = L.elem+L.length-1; p >=q ; p--)
*(p+1)=*p; //移动元素
*q=e;
L.length++;

}
//删除
int delNode(int i)
{
int *p,*q;
int e;
q=L.elem+i-1;
e=*q;
for(p=q+1;p<=L.elem+L.length-1;p++)
*(p-1)=*p;
L.length--;
return e;
}
void main()
{
int n,i=3,e=7;
InitList();
printf("输入n的值:");
scanf("%d",&n);
input(n);
printf("插入前的值:");
output();
insertNode(3,7);
printf("插入后的值:");
output();
delNode(4);
printf("删除后的值:");
output();

}