资源描述
名字:庄智(201050405802)
上机实习一
一,题目:线性表顺序存储运算的算法实现
二,实验目的:
1.掌握线性表顺序存储结构的C语言描述
2.体会last域在算法实现所起的作用
3.理解合理的存储结构设计与算法实现的存在的关系 。
建立含有若干元素的顺序表,对刚建立的顺序表实现插入、删除、输出的操作,界面为菜单形式。
三,程序功能 和功能层次图:
主函数
调用菜单函数
调用创建函数
调用插入函数
调用删除函数
调用输出函数
程序结束
1、(菜单)主程序;
2、表的建立及初始化;
3、表的数据插入;
4、表的数据删除;
5、表的数据输出;
功能层次图为:四,运行结果
创建线性表
插入线性表
插入以后的结果表、、、、
删除线性表
删除以后的结果
插入错误
删除错误
五,小结
在做这个程序的时候,虽然遇到一些问题,但最后都被我解决, 自信心上得到比较大的提升,这也是这次实践最大的收获。同时,知识上的收获也是不可忽视的,亲手解决问题的过程也是很好的学习过程,并且积累了一些经验,相信会为以后的学习发展带来非常积极的帮助。
源代码:
#include<stdio.h>
#include<conio.h>
#include<process.h>
typedef int datatype;
#define maxsize 1024
typedef struct
{
datatype data[maxsize];
int last;
}sequenlist;
char caidan()
{
char ch;
do {
printf("1:create list\n");
printf("2:insert to list\n");
printf("3:delete\n");
printf("4:display list\n");
printf("5:exit\n");
printf("Please choose:");
}while(ch=getch(),ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');
return(ch);
}
int INSERT(sequenlist *L,int x, int i)
{
int j;
if(L->last>=maxsize-1)
{
printf("\noverflow");getch();return NULL;
}
else
{
if(i<1||i>L->last+1)
{
printf("\nerror");getch();return NULL;
}
else
{
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last=L->last+1;
printf("\nInsert Succeed\n");getch();
}
return(1);
}
}
int DELETE(sequenlist *L,int i)
{
int j;
if(i<1||i>L->last+1)
{
printf("\nerror");getch();return NULL;
}
else
{
for(j=i;j<=L->last;j++)
L->data[j-1]=L->data[j];
L->last--;
printf("\nDelete Succeed\n");getch();
}
return(1);
}
int INPUT(sequenlist *L)
{
int n,i,j=1;
printf("\nPlease input number of data:");
scanf("%d",&n);
for(i=0;i<n;i++,j++)
{
printf("Data[%d]:",j);
scanf("%d",&L->data[i]);
}
return(n-1);
}
void DISPLAY(sequenlist *L,int n)
{
int i,j=1;
for(i=0;i<n;i++,j++)
printf("\nData[%d]:%d",j,L->data[i]);
}
void main()
{
sequenlist *L;
char ch;
int i,x;
clrscr();
do{
clrscr();
ch=caidan();
printf("%c",ch);
getch();
printf("\n");
switch(ch)
{
case'1': L->last=INPUT(L); printf("List was created successfully\n");
getch();
break;
case'2':
DISPLAY(L,(*L).last+1); printf("\n");
printf("Please input index u want to insert:");
scanf("%d",&i);
printf("Please input data u want to insert:");
scanf("%d",&x);
INSERT(L,x,i);
break;
case'3':
DISPLAY(L,(*L).last+1); printf("\n");
printf("Please input index u want to delete:");
scanf("%d",&i);
DELETE(L,i);
break;
case'4': DISPLAY(L,(*L).last+1);getch();printf("\n");
break;
case'5': break;
}
}while(ch!='5');
}
展开阅读全文