马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>;
#include <stdlib.h>;
#define maxsize 100
#define ok 1
typedef int elemtype;
typedef struct {
elemtype *elem;
int length;
int initsize;
}sqlist;
void initlist(sqlist *L)
{
int n;
printf("请输入你想创建的顺序表长度:\n");
scanf("%d",&n);
L->elem=(elemtype *)malloc(sizeof(elemtype)*n);
L->length=0;
L->initsize=maxsize;
printf("请输入顺序表里的数值:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&L->elem[i]);
L->length++;
}
printf("顺序表创建成功\n");
}
void DisplayList(sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->elem[i]);
}
}
void listinsert(sqlist *L,int i,elemtype e)
{
int *p,*q;
printf("请输入你要插入的数字\n");
scanf("%d",&e);
printf("请输入你要插入的位置\n");
scanf("%d",&i);
q=&(L->elem[i-1]);
if(i<1||i>L->length)
{
printf("error!");
}
else
{
for(p=&(L->elem[L->length-1]);p>=q-1;p--){
*(p+1)=*p;
}
*q=e;
L->length++;
}printf("插入成功\n");
}
void listdelete(sqlist *L,int i,elemtype e)
{
printf("\n请输入你要删除第几位数:\n");
scanf("%d",&i);
if(i<1||i>L->length)
{
printf("error!");
}
else
{
for(i;i<=L->length;i++){
L->elem[i-1]=L->elem[i];
}
L->length--;
}
}
void search(sqlist *L)
{
int e,i,k=0;
printf("\n请输入你想要查找的数字:");
scanf("%d",&e);
for(i=0;i<=L->length-1;i++){
if(e==L->elem[i])
{
k=1;
break;
}
}
if(k==1)
{
printf("\n查找成功,位于第%d位\n",i+1);
}
else
{
printf("\n查找失败!\n");
}
}
void shanchuduoyu(sqlist *L)
{
}
int main()
{
sqlist L;
int i,e;
initlist(&L);
listinsert(&L,i,e);
DisplayList(&L);
listdelete(&L,i,e);
printf("删除后表中数为:");
DisplayList(&L);
search(&L);
shanchuduoyu(&L);
DisplayList(&L);
return 0;
}
实验要求
(1)根据输入顺序表的长度n和n个无序整数值建立一个顺序表;
(2)在顺序表的第i个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值;
(3)删除顺序表中第i个元素,并输出删除后的顺序表中各元素值;
(4)在顺序表中查找值为e的数据元素,如果查找成功,则输出“查找成功!”和该元素在顺序表中的位置,否则输出“查找失败!”;
(5)根据输入顺序表的长度m和m个非递减的有序整数建立一个有序顺序表,然后删除其中所有的重复元素(即相同的整数只保留一个) ,最后输出删除后的有序顺序表中各元素值。
前四题已完成,请帮我看看哪有错的吗,还有第五题不会写。写在shanchuduoyu那里。 |