第一次实验 线性表的实现及其应用.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一次实验 线性表的实现及其应用

数据结构实验(C语言版) 第一次实验 线性表的实现及其应用 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 二、关键技术分析 三、提交作业要求 * * * 一、实验内容 1.用C语言实现线性表的存储结构(顺序表或链表,任选其中之一); 2.实现线性表所有基本操作的有关算法; 3.利用线性表解决某一实际问题(实现学生成绩管理系统;实现集合的交运算和并运算)。 1.顺序表的类型定义 #define MAXNUM 100 typedef int DateType; typedef Struct { DataType data[MAXNUM]; int last; //存放线性表中最后一个元素在数组data[ ]中的下标 } SeqList; 注意:顺序表的类型定义可存储在seqlist.h中。 2.顺序表的空间申请 在教材第6页中的“置空表”的程序有错,缺少了申请存储空间的语句,故完整程序应该为: Void SeqLSetNull(SeqList *l) { l=(SeqList*) malloc(sizeof(SeqList)); l-last= -1; } 注意:教材第6页至第8页中的算法①~⑧给出了线性表在顺序表存储结构下的所有基本操作的实现算法,可存储在seqlist.cpp中。 3.循环选择菜单的设计 循环选择菜单的设计可采用教材第9页至第10页的方法,用do-while语句结合switch-case语句进行循环选择菜单的设计。用户通过选择输入某个数字选择执行某个操作。当用户选择输入0时结束循环;否则,每执行完某个操作(如用户输入6选择执行插入操作)后,又重新显示菜单等待用户输入新的选择数字。 4.带头结点的链表和不带头结点的链表 在实现链表的时候一定要注意,一般情况下宁可使用带头结点的链表,这样在实现插入操作和删除操作的时候会方便一些。 教材第10页给出了单链表的结点类型LinkedList的定义;教材第11页至第12页中的算法①~⑥均是针对带头结点链表编的程序;算法⑧是用“尾插法”建立带头结点单链表。算法⑨是输出带头结点的单链表的算法。而算法⑦是用“头插法”建立不带头结点的单链表; 可将教材第10页中的单链表结构类型定义存储在linklist.h中;将算法①~⑥、 算法⑧、⑨存储在linklist.cpp中,然后在主函数中用#include “linklist.h”和#include “linklist.cpp”引用这两个文件。 第11页中的算法①有错,应改为: void InitLList(LinkedList *L) {L=(LinkedList) *malloc(sizeof(LinkedList)); L-next=NULL; } 5.集合交、并运算的实现(P15~P18) 这里假设集合中的元素都是某种DataType(如int )类型,由于数据类型较简单,故可以利用2.1中的顺序表(seqlist.h和seqlist.cpp )或链表(linklist.h和linklist.cpp )来实现线性表即可(教材中是利用链表来做的)。 用一个线性表来存放一个集合中的所有元素,此时只要忽略线性表的“顺序”特性即可。 建议:主函数中可设计一循环选择菜单提示 用户选择如下命令: 输入集合A和集合B; 2)求集合交运算; 3) 求集合并运算; 0)退出。 6.实现学生成绩管理系统 但由于这里学生数据相对比较复杂,导致对单链表的输入、删除、插入等操作较为复杂,不能直接使用教材2.1节中实现的单链表来表示线性表。必须重新设计线性表的结点node(类型名为LinkList,教材第19页),并针对该线性表设计所需的全部操作(如建立、插入、删除、输出及主函数模块)的算法。 用一个带头结点的单链表来存放所有学生记录。 注意:线性链表是带头结点的链表,头指针head的类型应该为* LinkList类型。 6.实现学生成绩管理系统 (1)学生记录链表的建立(即输入)算法(P19~P20) void CreateLinkList(LinkList *head,int *n) 这里的head 和n是指针类型,head指向线性表的头结点; n用作学生人数计数器(在主函数中n作为实元替代算法中的虚元*n,通过指针类型完成“主”“子”之间的数据传递,主程序中n的初值为0); 程序中

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档