预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

--数学与计算科学学院实验报告实验项目名称线性表的链式表示与实现所属课程名称数据结构实验类型验证型实验日期班级学号姓名成绩----一、实验概述:【实验目的】1.掌握单链表的基本操作在链式存储结构上的实现。2.学会定义链式表的存储结构,学会用C++语言来实现链式表的基本操作,提高编程能力3.线性表的逻辑结构特征3.1以元素在计算机内“物理位置相邻”来表示线性表中数据元素之间的逻辑关系。3.2有且仅有一个开始结点,没有直接前驱,且仅有一个直接后继;有且仅有一个终结结点,没有直接后继,且仅有一个直接前驱。3.3其余内部结点都有且仅有一个直接前驱和一个直接后继。【实验原理】1.线性链表的特点1.1动态分配的存储结构1.2每一个结点的指针域指向其直接后继元素的数据域,尾元结点除外1.3指针是数据元素之间的逻辑关系的映像2线性链表的类C语言表示typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;【实验环境】VC++6.0二、【实验内容】【实验方案】编写主函数,调用链式表的存储结构初始化建表,插入和删除的算法,调试运行得出结果【实验过程】(实验步骤、记录、数据、分析)1.先将线性表的单链表存储结构与算法编入VC++6.0中TypedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;voidCreateList_L(LinkList&L,intn){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;}}StatusGetElem_L(LinkListL,inti,ElemType&e){p=L->next;j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i)returnERROR;e=p->data;returnOK;}StatusListInsert_L(LinkList&L,inti,ElemTypee){p=L;j=0;while(p&&j<i-1){p=p->next;++j;}if(!p||j>i-1)returnERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;returnOK;}StatusListDelete_L(LinkList&L,inti,ElemType&e){p=L;j=0;while(p->next&&j<i-1){----p=p->next;++j;}if(!p->next||j>i-1)returnERROR;q=p->next;p->next=q->next;e=q->data;free(q);returnOK;}2.调试第一次显示错误如下:原因:由于没有头文件及宏定义以及自定义,因此导致许多错误,可能还有许多错误没有显示3.将以下语句编入VC++6.0中#include"stdio.h"#include"stdlib.h"#defineOK1#defineERROR0typedefintElemType;typedefintStatus;4.调试第二次显示错误如下:----原因:由于算法中许多变量没有定义,因此有许多错误5.将以下语句加入算法中:inti;LinkListp;(加入创建链表的算法中)LinkListp;intj;(加入查找元素的算法中)LinkListp,s;intj;(加入插入元素的算法中)LinkListp,q;intj;(加入删除元素的算法中)6.调试第三次显示没有错误:7.现在开始编写主函数:(1)先编写调用创建链表的函数的主函数:如下:voidmain(){LinkListL;inti,n;scanf("%d",&n);CreateList_L(L,n);for(i=n;i>0;--i)printf("%d",L->data);printf("\n");----}调试显示为:运行显示为:产生了随机数说明for循环语句那里编写错误因此修改为:LinkListp;for(p=L->next;p!=NULL;p=p->next)printf("%d",p->data);调试显示为:运行显示为:这次正确了那么继续编写下面的其他主函数,形成的总的主函数为:voidmain(){LinkListL,p;inti,n;scanf("%d",&n);----Create