- 53
- 0
- 约7.66千字
- 约 19页
- 2018-01-20 发布于湖北
- 举报
数据结构线性表的链式表示和实现的实习报告
数学与计算科学学院
实 验 报 告
实验项目名称 线性表的链式表示与实现
所属课程名称 数据结构
实 验 类 型 验证型
实 验 日 期
班 级
学 号
姓 名
成 绩
实验概述:
【实验目的】
掌握单链表的基本操作在链式存储结构上的实现。
学会定义链式表的存储结构,学会用C++语言来实现链式表的基本操作,提高编程能力
线性表的逻辑结构特征
3.1 以元素在计算机内“物理位置相邻”来表示线性表中数据元素之间的逻辑关系。
3.2 有且仅有一个开始结点,没有直接前驱,且仅有一个直接后继;有且仅有一个终结结点,没有直接后继,且仅有一个直接前驱。
3.3 其余内部结点都有且仅有一个直接前驱和一个直接后继。
【实验原理】
线性链表的特点
1.1 动态分配的存储结构
1.2 每一个结点的指针域指向其直接后继元素的数据域,尾元结点除外
1.3 指针是数据元素之间的逻辑关系的映像
2线性链表的类C语言表示
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
【实验环境】
VC++6.0
二、【实验内容】
【实验方案】
编写主函数,调用链式表的存储结构初始化建表,插入和删除的算法,调试运行得出结果
【实验过程】(实验步骤、记录、数据、分析)
先将线性表的单链表存储结构与算法编入VC++6.0中
Typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList L, int n)
{
L=(LinkList)malloc(sizeof(LNode));
L-next=NULL;
for(i=n;i0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf(%d,p-data);
p-next=L-next;
L-next=p;
}
}
Status GetElem_L(LinkList L,int i,ElemType e)
{
p=L-next;
j=1;
while(pji)
{
p=p-next;
++j;
}
if(!p||ji)
return ERROR;
e=p-data;
return OK;
}
Status ListInsert_L(LinkList L,int i,ElemType e)
{
p=L;
j=0;
while(pji-1)
{
p=p-next;
++j;
}
if(!p||ji-1)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s-data=e;
s-next=p-next;
p-next=s;
return OK;
}
Status ListDelete_L(LinkList L,int i,ElemType e)
{
p=L;
j=0;
while(p-nextji-1)
{
p=p-next;
++j;
}
if(!p-next||ji-1)
return ERROR;
q=p-next;
p-next=q-next;
e=q-data;
free(q);
return OK;
}
调试第一次显示错误如下:
原因:由于没有头文件及宏定义以及自定义,因此导致许多错误,可能还有许多错误没有显示
将以下语句编入VC++6.0中
#include stdio.h
#include stdlib.h
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int Status;
调试第二次显示错误如下:
原因:由于算法中许多变量没有定义,因此有许多错误
将以下语句加入算法中:
int i;
LinkList p;(加入创建
原创力文档

文档评论(0)