- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)