东北大学数据结构上机实验报告

上传人:第*** 文档编号:57498102 上传时间:2018-10-22 格式:DOCX 页数:20 大小:88.63KB
返回 下载 相关 举报
东北大学数据结构上机实验报告_第1页
第1页 / 共20页
东北大学数据结构上机实验报告_第2页
第2页 / 共20页
东北大学数据结构上机实验报告_第3页
第3页 / 共20页
东北大学数据结构上机实验报告_第4页
第4页 / 共20页
东北大学数据结构上机实验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《东北大学数据结构上机实验报告》由会员分享,可在线阅读,更多相关《东北大学数据结构上机实验报告(20页珍藏版)》请在金锄头文库上搜索。

1、实验一实验一 线性表应用线性表应用1 1、实验目的实验目的对图书馆的图书信息管理作一个简单的模拟。2 2、实验要求实验要求设计图书信息管理的模拟程序。1)采用顺序表登录图书成绩。2)可以登记、查询、插入、删除图书成绩。3)将图书信息按类别存储到链表中。输入形式输入形式图书信息输出形式输出形式图书信息程序功能程序功能登记、查询、插入、删除图书成绩三、设计概要三、设计概要流程图流程图开始初始化用户界面录入查 询修改删除退出抽象数据类型的定义抽象数据类型的定义图书类型typedef struct int num; /书号char name20; /书名char author20; /作者char p

2、ress20; /出版社名称int count; /存馆数量char price10; /定价 ElemType;单链表结点类型typedef struct LNodeElemType data;struct LNode *next; LinkList;各程序模块之间的调用关系各程序模块之间的调用关系4、详细设计详细设计mainInitListmenuLocateElemCreateListRModifyListSortDisplayListDelete初始化初始化创建头结点 实现线性表的初始化L = (LinkList *) malloc(sizeof(LinkList);L-next =

3、NULL;用户界面用户界面运用 printf 函数录入int i, n;LinkList *s, *q, *p; /创建单链表p = L;while (p-next != NULL )p = p-next;printf(“请输入需要录入的图书信息的个数:n=“);scanf(“%d“, for (i = 1; i data.num, s-data.name, s-data.author,s-data.press, q = L-next;if (q = NULL ) /下一个节点为空 即此节点为尾节点p-next = s;p = s;p-next = NULL;printf(“录入成功!n“);

4、continue;while (q != NULL ) if (strcmp(s-data.name, q-data.name) = 0) printf(“此图书已存在!“);printf(“请重新输入:n“);scanf(“%d%s%s%s%d%s“, q = q-next;p-next = s;p = s;p-next = NULL;printf(“录入成功!n“);Sleep(1000);system(“cls“);menu(); return 0;查询LinkList *p = L-next; /p 指向第一个数据结点int c;int x = 0;char name110, auth

5、or110, press110;printf(“ 1 按书名查询:n“);printf(“ 2 按作者名查询:n“);printf(“ 3 按出版社名称:n“);printf(“ 4 返回n“);printf(“ 请选择 1-4 进行操作:n“);scanf(“%d“, if (c 4 | c data.name) != 0) /查找图书书名p = p-next;else printf(“书号 书名 作者 出版社名称 存馆数量 定价n“);printf(“%dt%st%st%st%dt%s“, p-data.num, p-data.name,p-data.author, p-data.pres

6、s, p-data.count,p-data.price);printf(“n“);p = p-next;x+;Sleep(2000);system(“cls“);menu(); if (p = NULL break;case 2:printf(“请输入图书作者:n“);scanf(“%s“, author1);while (p != NULL ) if (strcmp(author1, p-data.author) != 0) /查找图书作者p = p-next;else printf(“书号 书名 作者 出版社名称 存馆数量 定价n“);printf(“%dt%st%st%st%dt%s“

7、, p-data.num, p-data.name,p-data.author, p-data.press, p-data.count,p-data.price);printf(“n“);p = p-next;x+;Sleep(2000);system(“cls“);menu(); if (p = NULL break;case 3:printf(“请输入图书的出版社名称: n“);scanf(“%s“, press1);while (p != NULL ) if (strcmp(press1, p-data.press) != 0) /查找图书出版社名称p = p-next;else pri

8、ntf(“书号 书名 作者 出版社名称 存馆数量 定价n“);printf(“%d %s %s %s %d %s“,p-data.num, p-data.name, p-data.author,p-data.press, p-data.count, p-data.price);printf(“n“);p = p-next;x+;Sleep(2000);system(“cls“);menu(); if (p = NULL break;case 4:break;五、调试分析五、调试分析所遇问题的解决方法及分析所遇问题的解决方法及分析当我编写录入函数时,对如何将数据储存到链表中无从下手。后来经过查询

9、和多次尝试,决定用尾插法建立链表,采用这样的方法简单明了,易于编程。算法的时空分析及改进设想算法的时空分析及改进设想O(n)经验和体会经验和体会通过这次的上机实验,让我们对线性表的理解又有了进一步的提升,更加清楚地了解到线性表的储存方式。6、使用说明使用说明打开程序,根据界面提示即可7、测试结果(截屏)测试结果(截屏)8、附录附录#include #include #include#include#includetypedef struct int num;char name20;char author20;char press20;int count;char price10; ElemTy

10、pe;typedef struct LNode/定义单链表结点类型ElemType data;struct LNode *next; LinkList;void menu() /菜单函数printf(“- n“);printf(“ 欢迎光临图书管理系统! n“);printf(“- n“);printf(“1.图书信息录入添加功能:n“);printf(“2.图书信息查询功能:n“);printf(“3.图书信息排序功能:n“);printf(“4.图书的修改功能:n“);printf(“5.图书的删除功能:n“);printf(“0.退出系统:n“);printf(“请选择你需要的操作:n“

11、);void InitList(LinkList *L) /初始化线性表L = (LinkList *) malloc(sizeof(LinkList); /创建头结点L-next = NULL;int CreateListR(LinkList *L) /尾插法建表int i, n;LinkList *s, *q, *p;p = L;while (p-next != NULL )p = p-next;printf(“请输入需要录入的图书信息的个数:n=“);scanf(“%d“, for (i = 1; i data.num, s-data.name, s-data.author,s-data

12、.press, q = L-next;if (q = NULL ) p-next = s;p = s;p-next = NULL;printf(“录入成功!n“);continue;while (q != NULL ) if (strcmp(s-data.name, q-data.name) = 0) printf(“此图书已存在!“);printf(“请重新输入:n“);scanf(“%d%s%s%s%d%s“, q = q-next;p-next = s;p = s;p-next = NULL;printf(“录入成功!n“);Sleep(1000);system(“cls“);menu(

13、); return 0;void LocateElem(LinkList *L) /查询LinkList *p = L-next; /p 指向第一个数据结点int c;int x = 0;char name110, author110, press110;printf(“ 1 按书名查询:n“);printf(“ 2 按作者名查询:n“);printf(“ 3 按出版社名称:n“);printf(“ 4 返回n“);printf(“ 请选择 1-4 进行操作:n“);scanf(“%d“, if (c 4 | c data.name) != 0) /查找图书书名p = p-next;else

14、printf(“书号 书名 作者 出版社名称 存馆数量 定价n“);printf(“%dt%st%st%st%dt%s“, p-data.num, p-data.name,p-data.author, p-data.press, p-data.count,p-data.price);printf(“n“);p = p-next;x+;Sleep(2000);system(“cls“);menu(); if (p = NULL break;case 2:printf(“请输入图书作者:n“);scanf(“%s“, author1);while (p != NULL ) if (strcmp(author1, p-data.author) != 0) /查找图书作者p = p-next;else printf(“书号 书名 作者 出版社名称 存馆数量 定价n“);printf(“%dt%st%st%st%dt%s“, p-data.num, p-data.name,p-data.author, p-data.press, p-data.count,p-data.price);printf(“n“);p = p-next

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

当前位置:首页 > 行业资料 > 教育/培训

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