北京理工大学数据结构实验四报告.pdfVIP

  • 15
  • 0
  • 约3.18万字
  • 约 37页
  • 2017-11-08 发布于浙江
  • 举报
实验四(查找与排序) 一、 实验目的 1. 掌握查找与排序的基本思想及操作。 2. 用C 语言实现链表的建立、删除、增加结点等基本操作。 3. 灵活运用所学到的数据存储结构,熟悉掌握其思想及存储特点。 4. 学会综合使用学到的数据存储结构,并使用查找与排序的方法。 5. 用C 语言实现链表的建立、删除、增加结点等基本操作。 二、 实验题目 图书管理 (1)问题描述 有一个小型书库保管了大量图书,关于图书有大量信息需要处理,这些信息 包括图书的分类、书名、作者名、购买日期、价格等。现要求编写一个程序 以便于对图书的管理。 (2 )基本要求: a .建立图书信息。 b.提供查找功能,按照多种关键字查找需要的书籍。例如按书名查找,输入 书名后,将显示出该图书的所有信息,或显示指定信息。 c .提供排序功能,按照多种关键字对所有的书籍进行排序,例如按出版日 期进行排序。 d .提供维护功能,可以对图书信息进行添加、修改、删除等功能。 (3 )数据结构与算法分析 数据存储结构可根据需要自选。如:顺序表、单链表、双链表、栈等。算法主 要要求用到对数据的查询与排序算法。 三、 实验基础知识 1.性链表的每个数据元素 除了存储其本身的信息之外,还需存储一个指示其直接后继 的信息 (即直接后继的存储位置)。这两部分信息组成数据元素 的存储映像,称为结点。 它包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指 针域。 2.malloc 标准函数:void * malloc (size) ,分配 size 字节的内存区 。执行 p=(Linklist)malloc(sizeof(LNode))的作用是由系统生成一个LNode 型的结点,同时将该结点 的起始位置赋值给指针变量p 。 3.free 标准函数: void free(p) ,释放p 所指的内存区。执行free(p) 的作用是由系统回收一 个LNode 型结点,回收后的空间可以备作再次生成结点是用。 4.查找思路:从链表的第一个结点开始,按顺序依次与给定值比较,若某个记录的关键字 和给定值比较相等,返回该结点。反之,查找不成功。 5.排序思路:建立空链表,将需要排序的部分链表的每个结点按给定次序查入空链表中, 然后输出新链表。 四、实验设计方法 1.结构设计 定义一个结构 book ,包含书名name 、作者writer 、价格price、购买日期date 及出版 日期comedate 、和类别等基本信息。基本模块编写,包括对所需功能的实现,利用链表的 相关知识与内容,以及主函数和函数调用 switch 语句实现功能的选择与分配,主函数和编 写的函数再调用其他函数实现图书信息管理的功能。 2.功能设计 (1)建立图书信息 void creat(pbook head)//建立图书信息 { pbook p,q; p=head; q=(pbook)malloc(sizeof(book)); while(p-link!=NULL) p=p-link; q-link=NULL; p-link=q; printf(请输入书名\n); scanf(%s,q-name); printf(请输入作者姓名\n); scanf(%s,q-writer); printf(请输入书的价格\n); scanf(%f,q-price); printf(请输入书的购买日期\n 输入样例n); scanf(%s,q-date); printf(请输入书的出版日期\n 输入样例n); scanf(%s,q-comedate); printf(请输入书的类别\n); scanf (%s,q-family); printf(\n); num++; //每次加入新的信息后系统内图书总数+1 print(q); return head; } (2 )按照书名排序 void namesort(pbook head1,pbook head2)//按书名排序 { pbook q0,q[50],p1,p2,temp; q0=(pbook)malloc(sizeof(book)); int i=0

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档