C语言.docx
- 文档编号:7471490
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:17.28KB
C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(14页珍藏版)》请在冰豆网上搜索。
C语言
程序1:
#include
#include
typedefintDataType;//DataType类型根据实际情
#defineMAXSIZE100//MAXSIZE可根据实际情况而定况而定,这里假设为int
typedefstruct{
DataTypedata[MAXSIZE];
intlength;
}SqList;
boolInitList(SqList*L);//线性表的初始化
boolListEmpty(SqListL);//判断线性表是否为空表
intListLength(SqListL);//求线性表的长度
boolListTraverse(SqListL);//遍历线性表
boolListInsert(SqList*L,inti,DataTypee);//在线性表L的第i个元素之前插入新的元素e
boolFindElem(SqListL,inti,DataType*e);//查找元素
boolPutElem(SqList*L,inti,DataType*e);//修改元素
boolClearList(SqList*L);//清空表
//voidDestroyList(SqList*L);//释放表空间
voidQuit();//退出
voidmain()
{
SqListL;
while
(1)
{
printf("顺序表操作菜单");
printf("------------------------------------------\n");
printf("线性表的初始化---1判断线性表是否为空表---2\n");
printf("求线性表的长度---3遍历线性表---4\n");
printf("插入新的元素e---5查找元素---6\n");
printf("修改元素---7清空表---8\n");
printf("退出----9\n");
printf("------------------------------------------\n");
intk;
printf("请输入你要操作的序号:
\n");
scanf("%d",&k);
if(k==0||k>10)break;
switch(k)
{
case1:
if(InitList(&L))
{
printf("线性表初始化成功!
\n\n\n");
}
else
{
printf("线性表初始化失败!
\n\n\n");
}
break;
case2:
if(ListEmpty(L))
{
printf("线性表为空表!
\n\n\n");
}
else
{
printf("线性表不为空表!
\n\n\n");
}
break;
case3:
inti;
i=ListLength(L);
printf("线性表的长度:
%d\n\n\n",i);
break;
case4:
if(ListTraverse(L))
{
printf("遍历成功!
\n\n\n");
}
else
{
printf("遍历失败,没有元素!
\n\n\n");
}
break;
case5:
intj;
DataTypee;
printf("请输入插入元素的位置:
\n");
scanf("%d",&j);
printf("请输入插入元素的值:
\n");
scanf("%d",&e);
if(ListInsert(&L,j,e))
{
printf("插入元素成功!
\n\n\n");
}
else
{
printf("插入元素失败!
\n\n\n");
}
break;
case6:
intn;
intelem;
printf("请输入查找元素的位置:
\n");
scanf("%d",&n);
if(FindElem(L,n,&elem))
{
printf("查找元素成功!
\n");
printf("你查找的结果是:
%d\n\n\n",elem);
}
else
{
printf("查找元素失败!
\n\n\n");
}
break;
case7:
intw;
DataTypem;
printf("请输入修改元素的位置:
\n");
scanf("%d",&w);
printf("请输入修改的值:
\n");
scanf("%d",&m);
if(PutElem(&L,w,&m))
{
printf("修改元素成功!
\n\n\n");
}
else
{
printf("修改元素失败!
\n\n\n");
}
break;
case8:
if(ClearList(&L))
{
printf("清空表成功!
\n\n\n");
}
else
{
printf("清空表失败!
\n\n\n");
}
break;
case9:
Quit();
break;
default:
printf("输入错误,请重新输入!
");
}
}
}
//线性表的初始化
boolInitList(SqList*L)
{
L->length=0;//空表,长度为0
returntrue;
}
//判断线性表是否为空表
boolListEmpty(SqListL)
{
if(L.length==0)
returntrue;
if(L.length!
=0)
returnfalse;
}
//释放线性表
//voidDestroyList(SqList*L)
//{
//free(L->data);//释放线性表占据的所有存储空间
//}
//求线性表的长度
intListLength(SqListL)
{
return(L.length);
}
//求线性表中第i个元素的值
boolFindElem(SqListL,inti,DataType*e)
{
if(i<1||i>L.length)
returnfalse;//判断i值是否合理,若不合理,返回ERROR
*e=L.data[i-1];//数组中第i-1的单元存储着线性表中第i个数据元素的内容
returntrue;
}
//遍历线性表
boolListTraverse(SqListL)
{
inti;
for(i=1;i<=L.length;++i)
{
printf("%d",L.data[i-1]);
}
returntrue;
if(L.length==0)
returnfalse;
}
//清空线性表
boolClearList(SqList*L)
{
L->length=0;//将线性表的长度置为0
returntrue;
}
//在线性表L的第i个元素之前插入新的元素e
boolListInsert(SqList*L,inti,DataTypee)
{intk;
if(L->length==MAXSIZE)
returnfalse;
if(i<1||i>L->length+1)
returnfalse;
if(i<=L->length)
{
for(k=L->length-1;k>=i-1;k--)
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;
returntrue;
}
//给线性表中第i个元素赋值
boolPutElem(SqList*L,inti,DataType*e)
{
if(i<1||i>L->length)
returnfalse;
L->data[i-1]=*e;
returntrue;
}
//退出
voidQuit()
{
exit(-1);
}
程序2:
#include
#include
#defineMAXSIZE100
typedefintDataType;
#defineOK1
#defineERROR-1
#defineFALSE0
#defineTrue2
typedefstruct
{
DataTypedata[MAXSIZE];
intlength;
}SqList;
//初始化
intInitList(SqList*L)
{
L->length=0;//空表,长度为0
returnOK;
}
//判断是否为空表
intListEmpty(SqList*L)
{
if(L->length==0)
returnTrue;
if(L->length!
=0)
returnFALSE;
}
//求表长
intListLength(SqListL)
{
return(L.length);
}
//输出表
voidListTraverse(SqListL)
{
inti;
for(i=0;i printf("%d\t",L.data[i]); } //插入元素 intListInsert(SqList*L,inti,DataTypee) { intk; if(L->length==MAXSIZE) returnERROR; if(i<1||i>L->length+1) returnERROR; if(i<=L->length) { for(k=L->length-1;k>=i-1;k--) L->data[k+1]=L->data[k]; } L->data[i-1]=e; L->length++; returnOK; } //删除元素 intListDelete(SqList*L,inti,DataType*e){ intk; if(L->length==0)returnERROR; if(i<1||i>L->length)returnERROR; *e=L->data[i-1]; if(i { for(k=i;k L->data[k-1]=L->data[k]; } L->length--; returnOK; } //查找元素 intListFindEle(SqList*L,DataTypee) { inti; for(i=1;i<=L->length;i++) { if(e==L->data[i-1]) returni; } returnFALSE; } //修改元素 intListAlter(SqList*L,inti,DataType*e) { if(i<1||i>L->length) returnERROR; L->data[i-1]=*e; returnOK; } //清空表 voidClearList(SqList*L) { L->length=0;//将线性表的长度置为0 } //释放表空间 voidDestroyList(SqList*L)//释放线性表占据的所有存储空间 { if(L->data) free(L->data); } intmain() { inttmp=0,locat=0,res=0,n,i; SqList*list; list=(SqList*)malloc(sizeof(*list)); while (1) { printf("\n********************************\n"); printf("*1---------初始化*\n"); printf("*2---------判断是否为空表*\n"); printf("*3---------求表长*\n"); printf("*4---------输出表*\n"); printf("*5---------插入元素*\n"); printf("*6---------删除元素*\n"); printf("*7---------查找元素*\n"); printf("*8---------修改元素*\n"); printf("*9---------清空表*\n"); printf("*10--------释放表空间*\n"); printf("*11--------输入线性表初始值*\n"); printf("*12--------退出*\n"); printf("********************************\n"); printf("请选择菜单号(1-12): "); scanf("%d",&n); if(n==0||n>11) break; switch(n) { case1: InitList(list); printf("已完成初始化\n"); break; case2: if(ListEmpty(list)==True) printf("是空表\n"); else printf("不是空表\n"); break; case3: printf("线性表长度为: %d\n",ListLength(*list)); break; case4: printf("线性表元素的值为: \n"); ListTraverse(*list); break; case5: printf("要插入的位置和数值为: "); scanf("%d%d",&locat,&res); ListInsert(list,locat,res); printf("插入完成\n"); break; case6: printf("要删除的位置为: "); scanf("%d",&locat); ListDelete(list,locat,&res); printf("删除完成\n"); break; case7: printf("要查找的数为: "); scanf("%d",&locat); printf("该位置的值为: %d\n",ListFindEle(list,locat)); break; case8: printf("要修改的位置和数值为: "); scanf("%d%d",&locat,&res); ListAlter(list,locat,&res); printf("修改完成\n"); break; case9: ClearList(list); printf("表中内容已清空\n"); break; case10: DestroyList(list); printf("释放成功! \n"); break; case11: InitList(list); printf("请输入顺序表长度: \n"); scanf("%d",&list->length); printf("请输入顺序表的值: \n"); for(i=0;i scanf("%d",&list->data[i]); printf("线性元素的值为: "); ListTraverse(*list); break; case12: exit (1); default: break; } } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)