数据结构实验报告线性表的链式表示和实现.docx
《数据结构实验报告线性表的链式表示和实现.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告线性表的链式表示和实现.docx(9页珍藏版)》请在冰点文库上搜索。
数据结构实验报告线性表的链式表示和实现
长沙理工大学
数学与计算科学学院
实验报告
实验项目名称:
线性表的链式表示和实现
所属课程名称:
数据结构A
实验类型:
验证性
实验日期:
2012年4月5号
班级:
信管10-02班
学号:
201044070218
姓名:
张松涛
成绩:
一、实验概述:
【实验目的】
(1)、线性表的逻辑结构特征。
①、总存在第一个和最后一个元素。
②、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素。
③、除最后一个元素以外,每一个元素总存在唯一一个直接后驱元素。
(2)、顺序表的特征。
①、逻辑关系上相邻的物理位置上也相邻。
②、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址。
(3)学会定义线性表的链式存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
【实验原理】
//---线性表的单链表存储结构----
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
【实验环境】
实验的环境:
VC++
二、实验内容:
【实验方案】
编写主函数,调用初始化,建立线性链表的算法以及插入和删除算法。
调试
运行输入数据得出结果并进行分析。
【实验过程】(实验步骤、记录、数据、分析)
将程序输入VC6.0中
编译之后发现错误,errorC2144:
syntaxerror:
missing';'beforetype'int'。
缺少分号
修改之后,在编译一次。
没有错误
连接没有问题
【实验结论】(结果)
【实验小结】(收获体会)
1.实验程序应该多些注释,这样方便别人读懂你的程序。
2.程序运行过程中要多添加printf语句,提示程序员属于什么数据。
3.写程序时要细心,不要漏分号。
三、指导教师评语及成绩:
评语
评语等级
优
良
中
及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强
2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)
4实验结论正确.
成绩:
指导教师签名:
批阅日期:
附录1:
源程序
#include
#include
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
StatusListInsert_L(LinkList&L,inti,ElemTypee)
{LinkListp,s;
intj;
//
p=L;j=0;
while(p&&jnext;++j;}//
if(!
p||j>i-1)returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
returnOK;
}//ListInsert_L
StatusListDelete_L(LinkList&L,inti,ElemType&e)
{LinkListp,q;
intj;
p=L;j=0;
while(p->next&&jnext;++j;}
if(!
(p->next)||j>i-1)returnERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
returnOK;
}//ListDelete_L
voidCreateList_L(LinkList&L,intn)
{inti;
LinkListp;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;L->next=p;
}
}//CreateList_L
StatusGetElem_L(LinkListL,inti,ElemType&e)
{LinkListp;
intj;
p=L->next;j=1;
while(p&&j
p=p->next;++j;}
if(!
p||j>i)returnERROR;
e=p->data;
returnOK;
}//GetElem_L
voidmain()
{LinkListL,p;
inti,n;
ElemTypee;//将要用到得元素定义
printf("请输入你想创建多少个元素的链表");
scanf("%d",&n);//输入创建链表的数据个数
CreateList_L(L,n);//调用算法2.10
for(p=L->next;p!
=NULL;p=p->next)//输出自己刚才输入的数据
printf("%d",p->data);
printf("\n");
printf("请输入想查找第几个元素");
scanf("%d",&i);//查找元素的位置
GetElem_L(L,i,e);//调用算法2.8
printf("e=%d\n",e);//输出查找的元素
printf("请输入想在第几个元素位置前插入元素");
scanf("%d%d",&i,&e);//输入插入元素的位置
ListInsert_L(L,i,e);//调用算法2.9插入元素
for(p=L->next;p!
=NULL;p=p->next)
printf("%d",p->data);
printf("\n");//输出插入后的结果
printf("请输入想删除第几个元素");
scanf("%d",&i);//输入删除元素的位置
ListDelete_L(L,i,e);//调用算法2.10
for(p=L->next;p!
=NULL;p=p->next)
printf("%d",p->data);
printf("\n");//输出删除后年的结果
}
附录2:
实验报告填写说明
1.实验项目名称:
要求与实验教学大纲一致。
2.实验目的:
目的要明确,要抓住重点,符合实验教学大纲要求。
3.实验原理:
简要说明本实验项目所涉及的理论知识。
4.实验环境:
实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):
这是实验报告极其重要的内容。
概括整个实验过程。
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计性和综合性实验,在上述内容基础上还应该画出流程图
、设计思路和设计方法,再配以相应的文字说明。
对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):
写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):
根据实验过程中得到的结果,做出结论。
8.实验小结:
本次实验心得体会、思考和建议。
9.指导教师评语及成绩:
指导教师依据学生的实际报告内容,给出本次实验报告的评价。
.