1 / 8
文档名称:

定义类型.pdf

格式:pdf   大小:136KB   页数:8页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

定义类型.pdf

上传人:小辰GG 2023/3/13 文件大小:136 KB

下载得到文件列表

定义类型.pdf

文档介绍

文档介绍:该【定义类型 】是由【小辰GG】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【定义类型 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。#include<>
#include<>
#include<>
#defineLIS10
#defineICR1
typedefstruct
{
int*elem;
intlength;
intlistsize;
}sq;//定义类型
voidinitlist(sq*L)
{
(*L).elem=(int*)malloc(sizeof(int)*LIS);
if(!(*L).elem)exit(0);
(*L).length=0;
(*L).listsize=LIS;
}//建立空表
voiddestroylist(sq*L)
{
if(!(*L).elem)exit(0);
free((*L).elem);
(*L).length=0;
(*L).listsize=0;
}//销毁表
intlistempty(sqL)
{
if(!)exit(0);
if(==0)return1;
elsereturn0;
}//测试表是否为空
voidclearlist(sq*L)
{
if(!(*L).elem)exit(0);
(*L).length=0;
}//清空表
intlistlength(sqL)
{
if(!)exit(0);
;
}//求表长
voidgetelem(sqL,inti,int*e)
{
if(!)exit(0);
if(i<=0||i>)printf("error\n");
else*e=[i-1];
}//取表中第个i元素
intlocateelem(sqL,inte)
{
intm=0;
if(!)exit(0);
while(m<)
{if(e==[m])break;
m++;
}
if(m<)returnm+1;
elsereturn0;
}//定位元素e在表中的位置
voidpriorelem(sqL,inti,int*e)
{intk=0;
if(!)exit(0);
k=locateelem(L,i);
if(k<=1)printf("error\n");
else*e=[k-2];
}//求i前驱
voidnextelem(sqL,inti,int*e)
{intk=0;
if(!)exit(0);
k=locateelem(L,i);
if(k==0||k==)printf("error\n");
else
{*e=[k];
printf("后继为%d\n",*e);
}
}//求i后继
voidlistinsert(sq*L,inti,inte)
{if(!(*L).elem)exit(0);
if(i<=0||i>(*L).length+1)printf("error\n");
else
{if((*L).length==(*L).listsize)
{int*p;
inta;
p=(int*)realloc((*L).elem,((*L).listsize+ICR)*sizeof(int));
if(!p)exit(0);
else
{(*L).elem=p;
(*L).listsize+=ICR;
}
a=(*L).length;
for(;a>=i;a--)(*L).elem[a]=(*L).elem[a-1];
(*L).elem[a]=e;
}
else
{inta=(*L).length;
for(;a>=i;a--)(*L).elem[a]=(*L).elem[a-1];
(*L).elem[a]=e;
}
(*L).length++;
}
}//插入某个元素e
voidlistdelete(sq*L,inti,int*e)
{
if(!(*L).elem)exit(0);
if(i<=0||i>(*L).length)printf("error\n");
else
{inta=i;
*e=(*L).elem[i-1];
for(;a<(*L).length;a++)(*L).elem[a-1]=(*L).elem[a];
(*L).length--;
}
}//删除某个元素以e返回其值
voidcreate(sq*L,intm)
{inta=0,b=0,e=0;
int*p;
p=&a;
if(!(*L).elem)exit(0);
while(m>(*L).listsize)
{p=(int*)realloc((*L).elem,((*L).listsize+ICR)*sizeof(int));
if(!p)exit(0);
else
{(*L).elem=p;
(*L).listsize+=ICR;
}
}
printf("请输入元素");
for(;b<m;b++)
{scanf("%d",&e);
(*L).elem[b]=e;
(*L).length++;
}
}//为函数插入m个元素
voidoutput(sqL)
{intb=0;
for(;b<;b++)printf("%d",[b]);
}//输出元素
voidtraverse(sqL)
{intb=0;
for(;b<;b++)printf("%d",[b]);
}//遍历元素
voidmain()
{
sq*p;
sqh;
inta,b,c,f,e,d,i,j,k,l,m,n;
int*g;
g=&f;
p=&h;
printf("请选择你欲进行的操作\n");
printf("1:创建空表\n2:销毁表\n3:测试表是否为空\n4:清空表\n");
printf("5:求表长\n6:取表中第个i元素\n7:定位元素e在表中的位置\n8:求i前驱\n");
printf("9:求i后继\n10:插入某个元素e\n11:删除某个元素以e返回其值\n12:为函
数入m个元素\n");
printf("13:输出元素\n14:遍历元素\n15:结束本次程序\n");
printf("********你欲进行的操作\n");
scanf("%d",&e);
while(e!=15)
{switch(e)
{case1:initlist(p);
printf("已创建了一个空表\n");
break;
case2:printf("销毁表\n");
destroylist(p);break;
case3:printf("测试表是否为空\n");
a=listempty(h);
if(a==1)printf("yes\n");
elseprintf("no\n");
break;
case4:printf("将表清空\n");
clearlist(p);
break;
case5:printf("表中现有的元素个数\n");
b=listlength(h);
printf("%d\n",b);
break;
case6:printf("希望取出表中第几个元素并且输出:");
scanf("%d",&d);
getelem(h,d,g);
printf("%d\n",*g);
break;
case7:printf("希望在表中寻找的元素:");
scanf("%d",&i);
if(!locateelem(h,i))printf("不存在\n");
elseprintf("%d\n",locateelem(h,i));
break;
case8:printf("希望求表中什么元素的前驱并且输出:");
scanf("%d",&j);
priorelem(h,j,g);
printf("前驱为%d\n",f);
break;
case9:printf("希望求表中什么元素的后继续并且输出:");
scanf("%d",&k);
nextelem(h,k,g);
break;
case10:printf("希望插入的元素:");
scanf("%d",&m);
printf("希望插入的位置:");
scanf("%d",&n);
listinsert(p,n,m);
break;
case11:printf("希望删除第几个元素并且输出:");
scanf("%d",&l);
listdelete(p,l,g);
printf("%d\n",f);
printf("表中现有的元素个数\n");
b=listlength(h);
printf("%d\n",b);
break;
case12:printf("请输入欲送入的元素个数\n");
scanf("%d",&c);
printf("请输入欲送入的元素\n");
create(p,c);
break;
case13:printf("输出表中现有的元素\n");
output(h);
printf("\n");
break;
case14:printf("遍历表中现有的元素\n");
traverse(h);
printf("\n");
break;
default:break;
}
printf("********你欲进行的操作\n");
scanf("%d",&e);
}
}//主函数
运行情况:
以下是选择112131410356789114215的一组操作顺序进行得到的一组结果。之所以
选择这样的操作顺序,是因为:。
请选择你欲进行的操作
1:创建空表
2:销毁表
3:测试表是否为空
4:清空表
5:求表长
6:取表中第个i元素
7:定位元素e在表中的位置
8:求i前驱
9:求i后继
10:插入某个元素e
11:删除某个元素以e返回其值
12:为函数入m个元素
13:输出元素
14:遍历元素
15:结束本次程序
********你欲进行的操作
1
已创建了一个空表
********你欲进行的操作
12
请输入欲送入的元素个数
3
请输入欲送入的元素
请输入元素123
********你欲进行的操作
13
输出表中现有的元素
123
********你欲进行的操作
14
遍历表中现有的元素
123
********你欲进行的操作
10
希望插入的元素:6
希望插入的位置:2
********你欲进行的操作
3
测试表是否为空
no
********你欲进行的操作
5
表中现有的元素个数
4
********你欲进行的操作
6
希望取出表中第几个元素并且输出:4
3
********你欲进行的操作
7
希望在表中寻找的元素:6
2
********你欲进行的操作
8
希望求表中什么元素的前驱并且输出:2
前驱为6
********你欲进行的操作
9
希望求表中什么元素的后继续并且输出:2
后继为3
********你欲进行的操作
11
希望删除第几个元素并且输出:2
6
表中现有的元素个数
3
********你欲进行的操作
4
将表清空
********你欲进行的操作
2
销毁表
********你欲进行的操作
15
Pressanykeytocontinue