顺序
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的建立
年级 11级 学号 11064061 班号 2 专业 自动化 姓名 马俊杰
创新型
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
型 综合型 实验 实验顺序表的基本操作 名称 类型
实验目的:1. 理解线性表顺序存储结构的存储方式及其特点。
2. 掌握对顺序表存储结构的描述、基本操作的算法实现。
3. 掌握通过简单实验对C语言基础知识进行回顾;为后序的实验做准备。
实验要求:1.程序采用模块化设计。(独立的功能要用独立的函数来实现。)
2.建立相应的功能菜单。(针对本程序的5个功能建立相应的五个功能菜单,
选择相应的功能选项后进入相应的功能操作界面)
3.每次实验完成后我都会随机挑选20%左右的同学的程序进行检查,程序
必须能够实现所有要求的功能,并对指定的任一模块进行详细的讲解。若未通过检查
视为本次实验不合格。
4.实验报告根据
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
要求认真填写。
实
验
目
的
或
要
求
#include
#define MaxSize 100
typedef struct MySequence{
char data[MaxSize];
int length;
} MySeq;
void menu()
{
printf("----------------------------------------------------------------------------\n");
printf("本代码实现顺序表的如下几个基本功能,请选择对应的功能选项进行相应操作:\n");
printf("----------------------------------------------------------------------------\n");
printf("1.创建顺序表\n");
printf("2.查找字符\n");
printf("3.删除字符\n");
printf("4.插入字符\n");
printf("5.修改字符\n");
printf("6.显示所有字符\n");
printf("0.退出程序\n");
printf("----------------------------------------------------------------------------\n");
}
void SeqInit(MySeq* mys)
{
mys->length = 0;
}
int CreateSeq(MySeq* mys) 实 { 验 char c; 原 printf("请依次输入顺序表的字符序列,结束请输入'#'\n"); 理 while(1) ( { 算 fflush(stdin); 法 scanf("%c",&c); 流 if(c=='#') 程 { ) printf("输入结束~\n");
return 0;
}
else if(mys->length==100)
{
printf("顺序表存储空间已满,不能继续输入。\n");
return 1;
}
else
{
mys->data[mys->length]=c;
mys->length++;
}
}
return 2;
}
int GetData(MySeq* mys)
{
char x;
int i=0;
printf("输入要查找的字符:\n");
fflush(stdin);
scanf("%c",&x);
if(mys->length==-1) return -1;
while(i<=mys->length&&mys->data[i]!=x) i++;
if(ilength)
{
printf("要查找的字符%c是顺序表的第%d个。\n",x,i+1);
return(i+1); }
else
{
printf("顺序表中没有字符%c。\n",x);
return(-1);
}
}
int ShowAll(MySeq* mys)
{
int cur=0;
printf("顺序表中的数据依次为:");
for(cur=0;curlength;cur++)
{
printf("%c",mys->data[cur]);
}
printf("\n");
return 0;
}
int ListDelete(MySeq* mys)
{
int j,i;
printf("输入要删除字符在顺序表中的顺序:\n");
fflush(stdin);
scanf("%d",&i);
if(i<1||i>mys->length+1) return (-1);
if(mys->length==-1) return (-1);
for(j=i;j<=mys->length;j++)
mys->data[j-1]=mys->data[j];
mys->length--;
printf("字符删除完成\n");
return 1;
}
int Insert(MySeq* mys)
{
char c;int i,j;
printf("输入要插入的字符:\n");
fflush(stdin);
scanf("%c",&c);
printf("输入要插入的位置:\n");
fflush(stdin);
scanf("%d",&i);
if(i<1||i>mys->length)
{ printf("position error");
return(-1);}
if(mys->length==MaxSize)
{
printf("overflow");
return(-1);
}
for(j=mys->length;j>=i-1;j--)
mys->data[j+1]=mys->data[j];
mys->data[i-1]=c;
mys->length++;
return 1;
}
int Modification(MySeq* mys)
{
char c;int i;
printf("输入你要修改的字符的位置:\n");
fflush(stdin);
scanf("%d",&i);
printf("输入修改后的字符:\n");
scanf("%c",&c);
mys->data[i-1]=c;
printf("字符修改完成\n");
return 0;
}
void main()
{
MySeq mys;
int choice = 0;
SeqInit(&mys);//对顺序表进行初始化
menu();
printf("本代码实现顺序表的几个基本功能,请选择对应的功能选
项进行相应操作:");
fflush(stdin);
scanf("%d",&choice);
while(1)
{
switch(choice)
{
case 1:
if(mys.length!=0)
{
char c;
printf("顺序表已经初始化,再次初始化将清除原有
数据。是否继续 (y/n):");
fflush(stdin);
scanf("%c",&c);
while(1)
{
if(c=='y')
{
mys.length = 0;
CreateSeq(&mys);
break;
}
else if(c=='n')
{
break;
}
else
{
printf("是否继续 (y/n):");
fflush(stdin);
scanf("%c",&c);
}
}
break;
}
else
{
CreateSeq(&mys);
break;
}
case 2:
{
GetData(&mys);
break;
}
case 3:
{
ListDelete(&mys);
break;
}
case 4:
{
Insert(&mys); break;
}
case 5:
{
Modification(&mys);
break;
}
case 6:
{
ShowAll(&mys);
break;
}
case 0:
printf("顺序表的基本功能已经实现~现已退出程序~
\n");
break; break;
}
menu();
printf("本代码实现顺序表的几个基本功能,请选择对应的功能选
项进行相应操作:");
fflush(stdin);
scanf("%d",&choice); }
}
组 内 分
工 无 (
可 选
)
实
验
结
果
分 析
及
心 得
体
会
成
绩 评 教师签名: 定
2010年 月 日 备注:源代码要求有注释说明