计算机软件基础二-数据结构实验指导

上传人:新** 文档编号:558381726 上传时间:2023-11-02 格式:DOC 页数:28 大小:108KB
返回 下载 相关 举报
计算机软件基础二-数据结构实验指导_第1页
第1页 / 共28页
计算机软件基础二-数据结构实验指导_第2页
第2页 / 共28页
计算机软件基础二-数据结构实验指导_第3页
第3页 / 共28页
计算机软件基础二-数据结构实验指导_第4页
第4页 / 共28页
计算机软件基础二-数据结构实验指导_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《计算机软件基础二-数据结构实验指导》由会员分享,可在线阅读,更多相关《计算机软件基础二-数据结构实验指导(28页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 实验一 线性表的应用1实验名称商品信息管理程序。2实验学时4学时。3. 实验目的(1)复习和巩固线性表中的相关概念和知识;(2)熟悉线性表的顺序存储或链式存储结构的具体实现方法;(3)掌握线性表的建立、插入、删除、查找、输出等基本操作算法;(4)提高灵活运用所学算法、采用顺序线性表或链式线性表处理实际问题的能力;(5)提高学生综合运用所学知识分析问题和解决问题的能力。4实验要求本实验要求使用高级编程语言C语言编写一个商品信息管理程序,商品信息表采用顺序存储结构或链式存储结构存放。该程序中各功能均需采用独立的模块实现;程序应具有菜单选择功能;并允许

2、用户在运行该程序过程中多次选择执行不同的功能。要求学生对整个系统的框架进行设计,规划数据的存储结构,编写出重要模块的算法。每人一组完成,上机之前要有预习准备。有兴趣的同学可在程序中增加商品入库的功能。实验设备:PC机一台,C语言IDE编程环境Micorosoft Visual C+ 6.0或者Turbo C 2.0。5. 实验内容编写一个超市商品信息管理程序,实现超市商品信息管理中的录入、插入、删除、查找、销售及显示等功能。商品信息包括商品的编号、名称、单价和数量等四项。具体商品信息的数据类型定义如下:typedef struct goodstype long int num; char na

3、me20; int price;int stock;GOODS; (1)录入功能:录入商品信息表中所有商品的信息,以顺序或链式存储结构存放,原始商品信息表中的商品信息按商品编号升序排列;(2)插入功能:输入一种新商品的信息,将新商品信息插入到线性表中的恰当位置,使商品信息表中的商品信息依然按商品编号有序排列;(3)删除功能:给定一种商品的编号,删除线性表中该商品的信息;(4)查找功能:给定一种商品的编号,在线性表中查找该商品的信息;(5)显示功能:输出线性表中所有商品的信息;(6)销售功能:输入客户选择的商品编号和所需数量,若该商品存在,计算应付的钱数并修改该商品的库存量;若无该商品或商品数量

4、不足,则给出相应的提示信息;(必做)能够一次售出多种不同的商品并打印购物小票(选做)6. 算法说明(1)录入功能即完成线性表的建立,输入商品信息时,最好以结束标志控制输入过程的进行。例如当输入的商品编号为-1时,商品信息录入结束。参考程序一:(顺序线性表)typedef struct GOODS listMAXLEN; int length;SeqList; /顺序表类型定义,list为存放元素值的一维数组,length用于存放表长void Init_List(SeqList* L)/初始化顺序表,以输入商品编号为-1作为输入结束标志long tnum; int n=0; printf(inp

5、ut num:); scanf(%ld,&tnum); while (tnum!=-1) L-listn.num=tnum; printf(input name:); scanf(%s,(L-listn).name); printf(input price:); scanf(%d,&(L-listn.price); printf(input stock:); scanf(%d,&(L-listn.stock); n+; printf(input num:); scanf(%ld,&tnum); L-length=n;参考程序二:(链式线性表)/结点类型定义,data用于存放结点的数据值,nex

6、t用于存放下一结点的地址typedef struct nodetypeGOODS data; struct nodetype* next; NODE; NODE* Create_Link() /尾接法创建链表,以输入商品编号为-1作为输入结束标志NODE *head,*p,*s; GOODS x; long tnum; head=(NODE*)malloc(LEN); head-next=NULL; p=head; printf(input num:); scanf(%ld,&tnum); while (tnum!=-1) x.num=tnum; printf(input name:); sc

7、anf(%s,x.name); printf(input price:); scanf(%f,&x.price); printf(input stock:); scanf(%d,&x.stock); s=(NODE*)malloc(LEN); s-data=x; s-next=NULL; p-next=s; p=s; printf(input num:); scanf(%ld,&tnum); return(head); (2)插入功能编写该插入算法的关键是要找到插入的恰当位置;若从线性表的前端向后找插入位置,则需找到第一个比待插元素的关键字大的元素,新元素插在该元素之前;若从线性表的后端向前找

8、插入位置,则需找到第一个比待插元素关键字小的元素,新元素插在该元素之后。插入算法的程序流程图如图1-1所示。注意:在链式线性表的查找只能从前向后找;顺序线性表插入新元素之前,必然要对插入位置后面的所有元素进行后移。开始从线性表的前端向后(或从后向前)找插入位置未找到比待插元素大(或小)的元素且未找完整个线性表?继续向后(前)查找NY将新元素插入到相应位置上结束图1-1 插入算法的程序流程图(3)删除功能编写该算法的关键是先要在线性表上找到待删元素,之后才能进行删除。删除算法的程序流程图如图1-2所示。开始从线性表的前端向后(或从后向前)找删除位置未找到待删元素且未找完整个线性表?继续向后(前)

9、查找NY将待删元素从线性表中删除结束图1-2 删除算法的程序流程图(4)查找功能查找的过程和思想与删除算法中进行的查找相同。参考程序一:(顺序线性表)int SearchList(SeqList* L,long tnum)/在顺序表上从后向前查找编号为tnum的元素/查找成功返回元素所在的位置,查找失败返回-1int i; i=L-length-1; while(L-listi.num!=tnum&i=0) i-; return(i);参考程序二:(链式线性表)NODE* SearchLink(NODE* head,long knum)/在单链表上从前向后查找编号为tnum的结点/查找成功返回

10、结点的地址,查找失败返回空指针NULLNODE *p; p=head-next; while(p!=NULL&p-data.num!=knum) p=p-next; return(p);(5)显示功能即对线性表中的元素从前到后逐个进行输出。参考程序一:(顺序线性表)void OutputList(SeqList* L)/显示功能函数,逐个输出顺序表中各个元素的值int i;printf( num name price stockn);for(i=0;ilength;i+) printf(%6ld%16s%10d%6dn,L-listi.num,L-listi.name,L-listi.pric

11、e,L-listi.stock);参考程序二:(链式线性表)void OutputLink(NODE *head)/显示功能函数,逐个输出链表中各个结点的数据值NODE* p; p=head-next; printf( num name price stockn); while(p!=NULL) printf(%6ld%16s%10.2f%6dn,p-data.num,p-data.name,p-data.price,p-data.stock); p=p-next;(6)销售功能基本的销售功能流程如下图所示,若要实现一次售出多种货物则需在此基础上加入循环结构,另外需累计所有商品的钱数并将所有售

12、出的商品信息存储下来(可存放在一个一维数组中)以便打印出购物小票。最基本的销售功能算法的程序流程图如图1-3所示。开始输入待销售的商品的编号和所需数量找到了吗?修改该商品库存数量并计算应付钱数NY结束在线性表中查找该商品的信息数量够卖吗?Y输出应付的钱数输出“无此商品”输出“数量不足”N图1-3 销售功能算法的程序流程图(7)菜单函数输出系统功能菜单信息并允许用户输入选项。参考程序:int menu()/菜单函数,返回用户输入的选项int ch; printf(*n); printf(* 1-input *n); printf(* 2-output *n); printf(* 3-insert

13、 *n); printf(* 4-delete *n); printf(* 5-search *n);printf(* 6-sale *n); printf(* 0- exit *n); printf(*n); printf(please input your choice:(0-6)n); scanf(%d,&ch); return(ch);(8)主函数主要是利用循环结构实现对系统各个功能的多次选择,每次选择之前应先输出系统功能菜单信息,当用户选择后根据用户的选项调用相应功能模块,完成特定的任务。参考程序:(主要给出主函数的框架语句,具体功能的实现语句在此略去)void main() int ch; /主函数中其它变量的定义在此略去 ch=1; while(ch!=0) ch=menu(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号