C语言顺序表爱吃窝窝头2023-11-302023-11-30//2022.9.1 顺序表#include<stdio.h>#include<stdlib.h>#define N 20typedef 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();}