- 59
- 0
- 约8.41千字
- 约 15页
- 2016-06-07 发布于湖北
- 举报
重庆科技学院
《数据结构》课程设计
专业班级: 计科2012级3班
学 号: 2012442084
姓 名: 赵弈胰
成 绩:
摘要
设计一些简单的程序,来实现屏幕输出,约瑟夫问题,单词的拼写检查,非递减有序集合合并,括号匹配,排队优化,快速排序等功能。我们首先应该想到设计需要的知识点,比如:链表、数组等方法,赋值运算、逻辑运算、括号运算等运算,还有循环等。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。摘要 I
目录 II
1需求分析 1
1.1功能需求 1
1.2系统运行环境 2
2开发环境 2
2.1 QT简介 2
2.2开发环境搭建 3
2.1.1安装g++ 3
2.1.2安装QT5.0 3
3总体设计 4
3.1简要说明 4
3.2总体程序框图 4
4详细设计 5
4.1界面设计 5
4.2函数代码实现 5
5功能测试 8
5.1下一张 8
5.2上一张 9
5.3放大 9
5.4缩小 10
6总结 11
7参考文献 12
附录 13
1需求分析
1.1功能需求
1)编写一个程序,从键盘输入整数n, 在屏幕上输出1~n之间的所有整数,每个数字之间保留3个空格有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。现在有一些英语单词需要做拼写检查,你的工具是一本词典。需要检查的单词,有的是词典中的单词,有的与词典中的单词相似,你的任务是发现这两种情况。单词A与单词B相似的情况有三种:
、删除单词A的一个字母后得到单词B;
、用任意一个字母替换单词A的一个字母后得到单词B;
、在单词A的任意位置增加一个字母后得到单词B。
你的任务是发现词典中与给定单词相同或相似的单词。知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的元素仍按值非递减有序排列。假设表达式中只包含三种括号:圆括号、方括号和花括号,它们可相互嵌套,如([{}])或({[][()]})等均为正确的格式,而{[]})}或{[()]或([]}均为不正确的格式.输入一串括号如果输入的右括号多余,输出:Extra right brackets如果输入的左括号多余, 输出:Extra left brackets如果输入的括号不匹配,输出:Brackets not match如果输入的括号匹配,输出:Brackets match设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍即当A窗口处理完2个顾客时,B窗口处理完一个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。排序是我们学习编程需要掌握的一个最基本的操作。这个世界上有很多种排序的方法,比如插入排序、选择排序、冒泡排序,但是他们都不够快。后来聪明的C. A. R. Hoare想出了一种很快的排序方法,由于它的确很快,于是我们就叫它快速排序。快速排序的原理其实很简单。假设我们需要将一些待排序的数从小到大排序。首先,我们从这些数中随便找一个数(key),然后把比它小的放到它的左边,比它大的放到它的右边,这样它左边的任意一个数都比右边的任意一个数小,我们把这个操作叫做“划分”。这时候我们再递归调用快排函数,将key的左边、右边都排好,整个集合的数字就有序了。scanf(%d,n);
for(int i=1; i=n; i++) {
printf(%d ,i);
}
3)程序流程图,
i=n Y N 程序结束
图2.1
2.2约瑟夫问题
1)程序说明:这个程序主要用的到知识是数组,循环和判断。首先让全部猴子初始化为1,是在圈内的状态,0代表退出圈外;然后用一个循环去遍历,每当喊道固定数字时,该猴子退出圈外,状态变为0;用一个K代表被叫出去的人数,每次加1;喊道最后一个时,接着第一个数数,如此循环,直到还剩一个时结果输出。
2)主要代码:
for(i=1; i=n
原创力文档

文档评论(0)