#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct{ int *elem;
int length;
int listsize;
}SqList;
int *newbase;
InitList_Sq(SqList &L){
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) return 0;
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}//InitList_Sq//
CreateList_Sq(SqList &L,int n){
L.length=n;
if(L.length>L.listsize){
newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase) return 0;
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
for(int i=0;i<n;i++)
L.elem[i]=rand()%100+1;
return 1;
}
InsertList_Sq(SqList&L,int i,int e){
int *p,*q;
if(i<1||i>L.length+1) return 0;
if(L.length==L.listsize){
newbase=(int *)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));
if(!newbase) return 0;
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
p=&(L.elem[i-1]);
for(q=&L.elem[L.length-1];q>=p;q--)
*(q+1)=*q;
*p=e;
++L.length;
return 1;
}
DeleteList_Sq(SqList &L,int i){
int *p;
if(i<1||i>L.length) return 0;
p=&(L.elem[i]);
for(p;p<(L.elem+L.length-1);p++)
*(p-1)=*p;
++L.length;
return 1;
}
OutputList_Sq(SqList L,int n)
{
if(L.length==0) printf("此表为空表!\n");
for(int i=0;i<n;i++)
printf("%d",L.elem[i]);
return 1;
}
int menu_select(){
int n;
printf("1:初始化一个线性表:\n");
printf("2:创建一个包含15个元素的线性表:\n");
printf("3:将一个数插入到第i个元素之前:\n");
printf("4:删除第i个元素:\n");
printf("5:输出线性表的每一个元素:\n");
do
{
printf("请输入选项代码n=1..6\n");
scanf("%d",&n);
}
while(n<0||n>6);
return n;
}
void main()
{
int n,i,e;
SqList L;
n= menu_select();
while(1){
switch(n){
case1: printf("初始化一个空表!\n"); InitList_Sq(L);OutputList_Sq(L,L.length);break;
case2: CreateList_Sq(L,15); OutputList_Sq(L,n);break;
case3: scanf("%d",i); e=rand(); InsertList_Sq(L,i,e);
OutputList_Sq(L,n);break;
case4: scanf("%d",i); DeleteList_Sq(L,i); OutputList_Sq(L,n);break;
case5: OutputList_Sq(L,n);break;
}
}
}
这是题目要求:1)编写完成下列功能的函数:(1)初始化一个线性表;(2)创建一个包含15个不大于100的正整数值的线性表(15个值由计算机随机产生);(3)将一个数插在第i个元素前(i在程序运行时输入);(4)删除第i个元素(i在程序运行时输入);(5)输出线性表中所有元素。
2)用主函数调用你所编写的函数,并在使线性表有所变化的每一步输出线性表的内容,以验证你编程序的正确性。