顺序表的基本操作实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南第一师范学院信息科学与工程系实验报告
课程名称:数据结构与算法成绩评定:
实验项目名称:顺序表的基本操作指导教师:王杰文
学生姓名:沈丽桃学号:10403080118 专业班级:教育技术
实验项目类型:验证性实验地点:科B305 实验时间: 2011年 10月8 日一、实验目的与要求:
实验目的:实现顺序表的创建、查找、插入、删除与输出
基本原理:顺序表的基本操作
二、实验环境:(硬件环境、软件环境)
1.硬件环境:奔ⅣPC。
2.软件环境:Windows XP 操作系统,TC2.0或VC++。
三、实验内容:(原理、操作步骤、程序代码等)
#include<stdio.h>
# define maxlength 100 /#后不应该有空格/
struct LIST
{
int elements[maxlength];
int last;
}L;
typedef int position;
void main()
{
position p,p1; /p和x最好赋值/
int x,x1,i,choice;
position Locate(int x,struct LIST*y);
void Insert(int x,position p,struct LIST*y);
void Delete(position p,struct LIST *y);
printf("option:Locate 1,Insert 2,Delete 3\n");
printf("please choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
{
printf("please input a number:");
scanf("%d",&x);
p1=Locate(x,&L);
if(p1==101)
printf(“the number does not exist”);
else printf("the position is:%d",p1); /break;/
}
case 2:
{
printf("please input a numer:");
scanf("%d",x1); /x1钱应加取地址符&/
printf("please input the position:");
scanf("%d",&p);
Insert(x1,p,&L);
for(i=0;i<=st;i++)
printf("%d",L.elements[i]);
printf("\n"); /break;/
}
case 3:
{
printf("please input the position:");
scanf("%d",&p);
Delete(p,&L);
for(i=0;i<=st;i++)
printf("%d",L.elements[i]);
printf("\n"); /break;/
}
}
position Locate(int x,struct LIST*y) /把变量x改为m/
{
int q;
if(st>maxlength-1)
printf("error:list is full");
else if((p>st)||(p<1))
printf("error:position does not exist");
else
{
for(q=1;q<st;q++)
{
if(elements[q]==x) /x改为m/(主要错误是elements[q]应改为L.elements[q] return q;
else return 101;
}
}
}
void Insert(int x,position p,struct LIST*y)
{
position q;
if(st>maxlength-1)
printf("error:list is full");
else if((p>st)||(p<1))
printf("error:position does not exist");
else
{
for(q=st;q>=p;q--)
{
L.elements[q+1]=L.elements[q];
st=st+1;
L.elements[q]=x;
}
}
}
Void Delete(position p,struct LIST*y) /这个问题重复出现,V要改为小写/ {
position q;
if(st>maxlength-1)
printf("error:list is full");
else if((p>st)||(p<1))
printf("error:position does not exist");
else
{
st=st-1;
for(q=p;q<=st;q++)
L.elements[q]=L.elements[q+1];
}
}
error C2146:syntax error:missing’)’before identifier’p’
error C2081:’position’:name in formal parameter list illegal
error C2146:syntax error:missing’:’before identifier’p’
error C2059:syntax error:’type’
error C2059:syntax error:’)’
error C2143:syntax error:missing’;’before’type’
warning C4020:’Insert’:too many actual parameters
warning C4013:’delete’undefined;assuming extern returning int
error C2065:’position’:undeclared identifier
error C2146:syntax error:missing’)’before identifier ‘Locate’
error C2143:syntax error:missing’)’before ‘type’
error C2198:’Locate’:too few avtual parameters
error C2059:syntax error:’)’
error C2065:’q’:undeclared identifier
error C2065:’elements’:undeclared identifier
error C2109:subscript requires array or pointer type
warning C4098:’main’:’void’function returning a value
warning C4098:’main’:’void’function returning a value
error C2146:syntax error:missing’);before identifier ’p’
error C2081:’position’:name in formal parameter list illegal
error C2061:syntax error:identifier’p’
error C2059:syntax error:’;’
error C2059:syntax error:’,’
error C2059:syntax error :’)’
四、实验体会
# define maxlength 100 /#后不应该有空格/
要先对数组进行初始化,存入一些数据
position p,p1; /p和x最好赋值/
scanf("%d",x1); /x1钱应加取地址符&/
if(elements[q]==x) /x改为m/(主要错误是elements[q]应改为L.elements[q]
Void Delete(position p,struct LIST*y) /这个问题重复出现,V要改为小写/
switch每个case语句写完要加break;
一开始不知所措,首先应该有一个大的方向,把主程序编号,再逐步求精,落实到每一个函数的编写。
C语言基础知识不结实,编出来的程序是错误一大堆,有的是明显的语法错误,有的是细节不注意,还有的就是输机时手误,像# define中间多了一个空格,这个错误太不易察觉。
还有就是结构体的定义,对它里面成员的调用方式都还没掌握。
在这里,我们要学会把问题细化,由粗到精,逐步编写程序,我觉得还是有难度,C语言学的不好,有时连基本的编程思想都没有,首要的还是的熟悉C语言。
要多编程,我感觉有好多知识很陌生,定义结构体,switch语句等都不熟练,这个程序刚开书应该对数组进行初始化,先放一部分数据,好进行下面的查插删操作,渐渐有了整体的思想,再转化为具体的C语句。