数据结构与数据库原理大作业.doc_第1页
数据结构与数据库原理大作业.doc_第2页
数据结构与数据库原理大作业.doc_第3页
数据结构与数据库原理大作业.doc_第4页
数据结构与数据库原理大作业.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安建筑科技大学华清学院 数据结构与数据库原理大作业 报告书 姓名 王琼 班级 通信 1001 班 学号 201006020135 目 录 摘要 3 1 1 程序概要设计程序概要设计 4 1 1 1 数据类型 4 1 1 2 需求分析 4 1 2 程序流程图 5 2 2 详细设计详细设计 9 2 1 JOSEPH环程序源代码 9 2 2 程序源代码 10 3 3 调试分析调试分析 12 4 4 总结总结 14 参考文献参考文献 15 摘 要 此次实验的目的 就是为了巩固我们的数据库专业知识 更好的加强书本 所学的基础技术 把所学的东西转化为实际应用 随着科学技术的发展 计算 机已经成为不可或缺的信息存储和交流的重要工具 而数据库已经起到了关键 的作用 数据管理已经极其方便了我们的生活 学习了 SQL 语言 使我对数据 库的创建 修改 删除方法有了一些了解 为了建立一个关系数据库信息管理 系统 必须得经过系统调研 需求分析 概念设计 详细设计等一般过程 为 我的毕业设计打下了基础 人们把数据存放在文件柜中 可现在随着社会的发展 数据量急剧增长 现在人们就借助计算机和数据库技术科学的保存大量的数据 以便能更好的利 用这些数据资源当人们收集了大量的数据后 应该把它们保存起来进入近一步 的处理 进一步的抽取有用的信息 关键词 建立单循环列表 需求分析 程序设计 1 程序概要设计 1 1 数据类型及需求分析 1 1 1 数据类型 根据设计要求 本系统的基本数据结构为 typedef struct Node int info 节点的座位数 int code 节点的密码 struct Node next PNode LinkList 1 1 2 需求分析 1 以带结点的单链表的循环存储结构表示每个人的密码 人数小于 30 键入每 个人的密码 密码为整数且小于 10 若输入有误 则报出相应出错信息 2 运行程序以用户和计算机的对话方式执行 即在计算机上显示提示信息 用 户 在键盘上输入演示程序中规定的运算命令 相应的输出数据和运算结果显示在 其后 3 改程序要求求得一个出队的顺序 首先设定人数 然后分别键入每个人的密 码 并选择一个初始出队的人的密码 运行 即可得一个出对顺序 4 程序执行的命令为 1 创建链表 2 求解出队顺序 3 输出出队的顺序 1 2 程序流程图 如图 2 1 通过主函数进行座位号 n 和初始值 m 的输入 调用建立单煦暖链表函 数 init list 和约瑟夫环出列函数 yue list 图 2 2 主函数 main 流程图 2 如图 2 2 建立单循环链表 并且将链表的座位号赋值给 q info 输入每个 座位号的密码给 q code 图 2 3 建立单循环链表流程图 1 如图 2 3 进行约瑟夫环出列算法 按先后顺序输出座位号 图 2 4 进行约瑟夫环出列算法 yue list 流程图 2 详细设计 一 joseph 环程序源代码 include struct node int num int code struct node link 建立链表数据类型 typedef struct node NODE 定义 NODE 为链表数据类型 NODE head tail 声明头指针 尾指针 int M n void createL 建表函数 NODE p q int i m p NODE malloc sizeof NODE 申请头结点空间 p link NULL head p 生成头结点 scanf d d 读取 m n for i 1 inum i 用 num 记录该数据结点的序号 scanf d 用 code 记录该数据结点的密码 p link q p 为当前链表的最后一个数据结点 将 q 作为 p 的后继放到链表末尾 p q 维护 p 继续作为当前链表的最后一个数据结点 tail p 保存尾指针 方便下面约瑟夫环操作时寻找第一个数据节点的前驱 p link head link 循环链表重要操作 将最后一个数据结点的后继作为第一个数 据结点 形成循环链表 void Josephus NODE p int m 约瑟夫环函数 NODE q int count 0 count 变量为报数计数器 记录当前报数的大小 q tail q 为尾结点 q 的后继就是第一个数据结点 p p link p 作为第一个数据结点 while p link p count 当循环链表所剩元素大于 1 时 if count m 当计数器打到当前报数的要求时 printf d p num 输出当前出列者的序号 m p code 更新 m 为出列者的密码 q link p link q 是 p 的前驱 此操作完成 p 所指结点的删除 free p 释放刚才删除的 p 所指结点的空间 p q link 令 p 指向下一个数据结点 count 0 else 当计数器小于报数要求时 q p p p link 维护 q 和 p 向前前进一位 printf d p num 打印最后剩下的人的序号 main createL 建立链表 Josephus head M 约瑟夫环计算 return 二 程序源代码 include struct stu int num char name float score 3 student 10 102001 AAA 75 85 90 102002 BBB 78 85 90 102003 CCC 72 83 98 102004 DDD 80 84 93 102005 EEE 75 84 93 102006 FFF 65 83 81 102007 GGG 85 73 68 102008 HHH 65 74 82 102009 III 75 72 100 102010 JJJ 75 74 70 main int i j float ave 10 ave2 10 s 10 t for i 0 i 10 i s i 0 for i 0 i 10 i for j 0 j 3 j s i student i score j ave i s i 3 printf every student 平均成绩 n for i 0 i 10 i printf d n student i num printf f n ave i printf 成绩最高的同学 n for i 0 i 10 i ave2 i ave i for i 0 i 10 i for j 0 j 10 i j if ave j ave j 1 t ave j ave j ave j 1 ave j 1 t for i 0 i 10 i for j 0 j 10 j if ave i ave2 j printf d n student j num printf f n ave i 3 调试分析 1 任务 编号是 1 2 n 的 n 个人按照顺时针方向围坐一圈 每个人只有 一个密码 正整数 一开始任选一个正整数作为报数上限值 m 从第一个人开 始顺时针方向自 1 开始顺序报数 报到 m 时停止报数 报 m 的人出列 将他的 密码作为新的 m 值 从他在顺时针方向的下一个人开始重新从 1 报数 如此下 去 直到所有人全部出列为止 设计一个程序来求出出列顺序 要求 利用单向循环链表存储结构模拟此过程 按照出列的顺序输出各个人的 编号 测试数据 n 7 7 个人的密码依次为 3 1 7 2 4 7 4 首先 m 6 则正确的输出是什么 输入数据 建立输入处理输入数据 输入 m 的初值 n 输入每个人的密码 建立单循环链表 输出形式 建立一个输出函数 将正确的输出序列 2 以学生成绩为数据元素建立一个一维数组 一个学生的成绩信息包括学号 姓名以及数学 语文 英语 3 科的成绩 程序中预定义 10 位同学的成绩 这 些记录按学号有序 在程序中实现下列功能 1 统计每位同学 3 门课程的平均成绩 2 按平均成绩高低进行冒泡排序并显示结果 4 总结 本次课程设计涉及到的范围很广 让本人能够比较系统的对 C 语言和数据 结构进行一次整理和复习 同时有了很多的体会和经验 1 巩固了以前学过的 C 语言的知识 在这次课程设计中我体会到 C 语言 超强的逻辑性 能够熟练使用 VC 的编译环境 也对这两门课程有了新的认识 他们既有联系 又相互区别 在编写程序过程中要灵活应用 2 对数据结构的理解有待加强 算法的知识面也有待于提高 不同的人 会选择不同的算法 所以即使同样的程序 不同的人必然会设计出不同的方案 所以以后的学习生活中 一定要广泛涉猎 掌握更多更好的解决问题的方法 3 此次设计让我意识到程序设计是脑力劳动和体力劳动相结合的 没有 平时基础的训练是不会写出高效的算法 此次课程设计时间虽短 但却课设的过程是短暂的 但我所收获的是永恒的 它让我尝到了学习的快乐 成功的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论