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

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

实验一 线性表的应用 1.实验名称 商品信息管理程序。 2.实验学时 4学时。 3. 实验目的 本实验C语言编写一个商品信息管理程序,商品信息表采用顺序存储结构或链式存储结构存放。该程序中各功能均需采用独立的模块实现;程序应具有菜单选择功能;并允许用户在运行该程序过程中多次选择执行不同的功能。要求学生对整个系统的框架进行设计,规划数据的存储结构,编写出重要模块的算法。每人一组实验设备PC机一台,C语言IDE编程环境Micorosoft Visual C++ 6.0或者Turbo C 2.0。 5. 实验typedef struct goodstype { long int num; char name[20]; int price; int stock;}GOODS; (1)录入功能:录入商品信息表中所有商品的信息,以顺序或链式存储结构存放,原始商品信息表中的商品信息按商品编号升序排列; (2)插入功能:输入一种新商品的信息,将新商品信息插入到线性表中的恰当位置,使商品信息表中的商品信息依然按商品编号有序排列; (3)删除功能:给定一种商品的编号,删除线性表中该商品的信息; (4)查找功能:给定一种商品的编号,在线性表中查找该商品的信息; (5)显示功能:输出线性表中所有商品的信息; (6)6. 算法说明 (1)录入功能 即完成线性表的建立,输入商品信息时,最好以结束标志控制输入过程的进行。例如当输入的商品编号为-1时,商品信息录入结束。 参考程序一:(顺序线性表) typedef struct {GOODS list[MAXLEN]; int length; }SeqList; //顺序表类型定义,list为存放元素值的一维数组,length用于存放表长 void Init_List(SeqList* L) //初始化顺序表,以输入商品编号为-1作为输入结束标志 {long tnum; int n=0; printf(input num:); scanf(%ld,tnum); while (tnum!=-1) { L-list[n].num=tnum; printf(input name:); scanf(%s,(L-list[n]).name); printf(input price:); scanf(%d,(L-list[n].price)); printf(input stock:); scanf(%d,(L-list[n].stock)); n++; printf(input num:); scanf(%ld,tnum); } L-length=n; } 参考程序二:(链式线性表) //结点类型定义,data用于存放结点的数据值,next用于存放下一结点的地址 typedef struct nodetype {GOODS 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:); scanf(%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)插入功能 编写该插入算法的关键是要找到插入的恰当位置;若从线性表的前端向后找插入位置,则需找到第一个比待插元素的关键字大的元素,新元素插在该元素之前;若从线性表的后端向前找插入位置,则需找到第一个比待插元素关键字小的元素,新元素插在该元素之后。插入算法的程序流程图如图1-1所示。 注意:①在链式线性表的查找只能从前向后找; ②顺序线性表插入新元素之前,必然要对插入位置后面的所有元素进行后移。

文档评论(0)

df9v4fzI + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档