数据结构线性表的链式表示和实现的实习报告.docVIP

  • 53
  • 0
  • 约7.66千字
  • 约 19页
  • 2018-01-20 发布于湖北
  • 举报

数据结构线性表的链式表示和实现的实习报告.doc

数据结构线性表的链式表示和实现的实习报告

数学与计算科学学院 实 验 报 告 实验项目名称 线性表的链式表示与实现 所属课程名称 数据结构 实 验 类 型 验证型 实 验 日 期 班 级 学 号 姓 名 成 绩 实验概述: 【实验目的】 掌握单链表的基本操作在链式存储结构上的实现。 学会定义链式表的存储结构,学会用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)

1亿VIP精品文档

相关文档