当前位置:文档之家› 数据结构

数据结构

void Initialize(int,int*);//初始化数组整形和指针型
int main() { int m,n,*ptr; printf("输入猴子数与出局时报的数\n");
scanf("%d %d",&n,&m); while(n<m)猴子数数
For(i=0;count!=0;ptr2++*ptr2=0 ?
(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
(4)训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风
(5)本次程序程序设计的主要目的是解决变相的“约瑟夫环”问题---猴子大王。从而使复杂的甄选工作变得明朗简单化。同样,这种解决问题的思想还可以运用到其他具有类似问题的领域,达到一点窥面的效果。
1、输入数据:输入m,n为整数
2、输出形式:中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。
3、使用循环单链表实现。
二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)
最后,对于我来说,独立完成这项课程设计是十分困难的,在学习和复习知识的过程中,难免要请教同学老师,他们的热心,让我感受到了团队的力量和团队的温暖,使我能顺利的完成任务。
课程设计的结束并不代表着学习的结束。这次的设计,把我带入到了一个全新的不曾接触过的领域,让我在以往只是注重操作的基础上,更多的思考到了,这是如何实现的,运用我所学到的知识是不是可以同样做出这样的网站,实现不一样的操作,达到同样的效果?我似乎有所领悟了,学习的本质不是让你牢牢的掌握一个知识,而是让你掌握一种方法,一种思想。同时,我知识的局限是毋庸置疑的,在纵多高级语言中,如,C++,JAVA,C#,c语言编程是我目前唯一能做到的,并且还做得很不完善,所以在以后的学习中一定要抓紧现在的大好时光扩充自己的知识储备,掌握更多的方法,为将来实现更多领域功能所用!同时本次课程设计让我学习知识的同时,也锻炼了自己面对新问题时的抗压能力,直面困难,不抛弃不放弃,坚持到底!在以后的学习和生活中,我将发扬这些优点,劈荆斩浪,挑战自我,一步一步往前走。
for( i =0 ;i < n ;i++)
for( j =0 ;j < m; j++)
scanf("%d",&a[i][j]);
flag = 0;
printf("马鞍点输出(输出该点所在的行数与列数):\n");
for( i = 0; i < n ;i++)
{
for( j = 0; j < m; j++)
基本掌握程序设计的基本思路和方法。
利用所学的基本知识和技能,解决简单的程序设计问题各算法描述
培养我们的数据抽象能力。利用单向循环链表模拟此过程,输出选出的大王编号。通过本课程设计,可加深我们对链表的了解,对今后的学习有很大帮助。
3、内容
全程序以数据结构(c语言)中的循环单链表为主要的设计支柱,利用了c语言简洁紧凑、灵活方便,语法限制不太严格,程序设计自由度大,生成目标代码质量高,程序执行效率高等方面的优点。循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环,基于这样的特点,它适合处理具有环形结构的数据元素序列。
4、开发及运行环境
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言
课程设计使用c语言工具,
硬件平台:
CPU:P4 1.8GHZ
内存:256MB以上
软件平台:
操作系统:Windows XP/Win7
4号猴子报:1
7号猴子报:2
4号猴子报:3 4号猴被淘汰
7号猴子报:1
胜出:7号猴子Press any key to continue
M=8 n=3
运行结果如下:
得到了预期结果
6:程序源代码
#include<stdio.h>
#include<stdlib.h> //使用calloc()函数
void FindKing_pointer(int,int,int*);//移动指针法找大王
Initialize(n,ptr);
FindKing_pointer(m,n,ptr);
free(ptr); return 0; } /*在数组中依次填入1,2,3,4,…*/
void Initialize(int n,int *ptr) { int i; for(i=0;i<n;i++) ptr[i]=i+1; } /*循环一次指针向后移一位,所指元素不为0时计数器加1.移动指针,当计数器数到m时将指针所指元素设为0. */ void FindKing_pointer(int m,int n,int *ptr)
{
minn = a[i][j];
for( k = 0 ;k < m; k++)
{
if( minn > a[i][k])
break;
}
if( k == m)
{
maxx = a[i][j];
for( l = 0; l < n; l++)
{
if( maxx < a[l][j])
break;
}
if( l == n)
#include<stdio.h>
int main()
{
int n, m, i, j, k, l, minn, maxx, flag ;
int a[256][256];
while(1)
{
printf("请输入矩阵的行列数:\n");
scanf("%d %d",&n,&m);
printf("请输入与行列数相符的矩阵:\n");
5号猴子:5 5号猴子报:2
6号猴子:6 6号猴子报:3 6号猴被淘汰
7号猴子:7 7号猴子报:1
8号猴子:8 8号猴子报:2
1号猴子报:3 1号猴被淘汰
2号猴子报:1
4号猴子报:2
5号猴子报:3 5号猴被淘汰
7号猴子报:1
8号猴子报:2
2号猴子报:3 2号猴被淘汰
4号猴子报:1
7号猴子报:2
8号猴子报:3 8号猴被淘汰
4、主要任务
现在需要用数据结构(c语言)解决“猴子选大王”的问题,具体问题如下:
一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求解决问题的程序必须满足以下条件:
{
printf("%d %d %d\n",i , j ,a[i][j]);
flag = 1;
}
}
}
}
if( flag == 0)
printf("此矩阵没有马鞍点");
printf("\n");
}
return 0;
}
该矩阵为
1 1 1 1
1 2 3 4
4 5 6 7
9 8 7 6
三、结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。)
其次,课程设计的主要内容和目的是解决实际问题,同时运用所学的知识。这是我认识到了将知识活学活用的重要性。以往的我们只是简简单单的将书本上的知识以模板的形式刻入脑袋中,而在面对实际问题时却往往不知所措,这是理论泛滥带来的直接后果。这次的实践,让我将上学期所学的c语言和本学期所学的数据结构在实际的操作运用中进一步巩固,对于那些没有学透的知识,如,函数调用,结构体等,在不停摸索,商讨的过程中最终将它们一一解决,同时也新增了许多没有学到过的内容。
在本次课程设计中,我收获了许多。
首先,在课程设计中通过对相关资料的搜索,设计猴子选大王实际上是一个约瑟夫环问题,设计这个程序比较简单,更重要的是在看到现象的同时我看到了它的本质,程序设计确实是一门神奇的工具,它可以通过普普通通的程序代码实现很多法在的流程,在减少人力劳动的同时,展现着科学的魅力。这样是我更加清楚地认识到自身存在的差距,所学的那点知识是远远不够的,学无止境才是真道理。
1、实验内容:
M只猴子要选大王,选举办法如下:所有猴子按1,2……n编号围成一圈,从第一号开始顺序1,2……m,凡是报m号的退出圈外,如此循环报数直到圈内只剩一只猴子时这只猴子就是大王。
2、实验要求:
(1)熟练设计链表并实现插入、删除、遍历等接口;
(2)设计出简单界面,实现用户参数输入和结果输出;
(3)设计函数,实现循环删除第N个猴子,剩下的最后一个是大王.
i++ i==m ?
*ptr2=i=0 Count-- Count==0 ?输出大王号数{ printf("输入数据有误,请重新输入!\n");
printf("输入猴子数与出局时报的数\n");
相关主题