编写一个完整程序,使用顺序表实现以下任务
(1)产生50个1~100的随机整数,将其中偶数依次保存在顺序表中
(2)输出顺序表的所有元素,并求顺序表的长度
(3)在指定位置i处插入一个1~100随机整数
(4)删除顺序表中值为i或者指定位置I的节点
(5)将顺序表升序排列
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
typedef int elemtype;
typedef struct {
elemtype data[maxSize];
int size;
}seqlist;
seqlist *create_seqlist();
void print_seqlist(seqlist *l);
int insert_seqlist(seqlist *l,int i);
void delet_seqlist(seqlist *l);
void sort_seqlist(seqlist *l);
seqlist *create_seqlist()
{
int i;
seqlist *l=(seqlist *)malloc(sizeof(seqlist));
if(l==NULL)
return l;
l->size=-1;
for(i=0;i<50;i++)
{
elemtype a=rand()%99+1;
if(a%2==0)
l->data[++l->size]=a;
}
return l;
}
void print_seqlist(seqlist *l)
{
int i;
for(i=0;i<=l->size;i++)
printf("%d ",l->data[i]);
printf("\n链表长度为:%d\n",l->size+1);
}
int insert_seqlist(seqlist *l)
{
int i;
printf("\n请选择要插入的位置:");
scanf("%d",&i) ;
if(i>l->size+1)
return 0;
int x=l->size;
for(;x+1>i;x--)
l->data[x+1]=l->data[x];
l->data[i]= rand()%99+1;
return 1;
}
void delet_seqlist(seqlist *l)
{
int n=l->size;
int select;
int x=0,i;
do{
printf("请选择删除方式:\n");
printf("0.不删除\t1.删除指定值\t2.删除指定位置\n");
scanf("%d",&select);
if(select==1)
{
printf("请选择要删除的值:");
scanf("%d",&i);
while(i!=l->data[x]&&x<=l->size) x++;
if(x==l->size+1)
printf("\n该值不存在!删除失败!\n");
if(x!=l->size+1)
printf("\n删除成功!\n");
for(;x<n;x++)
l->data[x]=l->data[x+1];
print_seqlist(l);
}
else if(select==2)
{
printf("请选择要删除的位置:");
scanf("%d",&i);
if(i>l->size+1)
printf("位置有误!删除失败!");
else
printf("\n删除成功!\n");
print_seqlist(l);
}
else if(select==0);
else
printf("输入选项有误,请重新输入!");
}while(select!=0);
}
void sort(seqlist *l)
{
int i=0,j=0;
int size=l->size;
int temp;
for(i=0;i<size;i++)
{
for(j=0;j<size-i;j++)
{
if(l->data[j]>l->data[j+1])
{
temp=l->data[j];
l->data[j]=l->data[j+1];
l->data[j+1]=temp;
}
}
}
printf("升序排序如下:\n");
print_seqlist(l);
}
int main()
{
int i,result;
seqlist *l;
l=create_seqlist();
print_seqlist(l);
result=insert_seqlist(l);
if(result==1)
printf("插入成功!\n");
else
printf("插入失败!\n");
print_seqlist(l);
delet_seqlist(l);
sort(l);
}