数据结构课程设计

发布 2022-10-01 20:47:28 阅读 6605

湖南工学院计算机系。

课程设计。课程名称: 数据结构。

题目: 数据结构课程设计。

年级/专业/班: 计本0703班。

学生姓名: 邹明军。

学号: 310070303

指导老师: 彭代文。

开题时间: 2024年06月11日。

完成时间: 2024年06月15日。

目录。一 joseph环 1

1.1 任务 1

1.2 概要设计 1

1.2.1 设计思想 1

1.2.2 算法描述 1

1.2.3 数据结构 3

1.3 详细设计 3

1.4 测试与性能分析 5

1.4.1 测试 5

1.4.2 性能分析 5

二纸牌游戏 6

2.1 任务 6

2.2 概要设计 6

2.2.1 设计思想 6

2.2.2 算法描述 6

2.2.3 数据结构 6

2.3 详细设计 7

2.4 测试与性能分析 7

2.4.1 测试 7

2.4.2 性能分析 8

三课程设计体会 8

四参考文献 8

编号是1,2,……n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。

设计一个程序来求出出列顺序。

要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。

测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?

要求:输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。

输出形式:建立一个输出函数,将正确的输出序列。

建立单循环链表,将每个的信息储存此链表中,构成一个圈。递归调用循环删除函数,每一个人出列打印他的id号,将他的key赋给m。直到链表中只剩下一个人,打印他的id。

算法流程图如下:

利用单循环链表存储结构。

源**如下。

#include<>

typedef struct node

int number;

int key;

struct node *next;

lnode,*linklist;//定义结点结构。

linklist h;定义头结点。

initlist(int n)

int i;

int key;

linklist l;

if (n>=1)

h=h->next;//构成循环单链表。

elseprintf("the input is error")/输入错误;

joseph(int m,linklist h)

int i;

linklist l;

l==h;i=1;

while(i!=m) /依次访问结点。

printf("%3d",h->number);

m=h->key;

l->next=h->next;

free(h);/删除释放结点。

h=l->next;

if(h!=l)

joseph(m,h);/递归调用此函数。

elsemain()

int n;

int m;

int i;

clrscr();

printf("please input the first key of m:")

scanf("%d",&m);

printf("please input how many number of the joseph:")

scanf("%d",&n);

printf("please input the key from number1 to number%d:",n);

initlist(n);

printf("the order of dequeue is:")

joseph(m,h);

程序运行如下图。

算法时间复杂度。

t(n)=n+n*n/m*m

算法空间发杂度。

s(n)=n

编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;..再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?

定义一个长度为53数组,一张牌为数组的一个元素,定义元素值“1“为纸牌正面向上,”0“为正面向下。开始所有元素的值都为1.利用两个嵌套循环进行翻牌,内循环控制翻牌,外循环控制基数。

牌被翻一次值取反,最后输出数组中值为1的元素的序号。

程序n-s图如下。

此程序只利用数组存储结构。

源**如下。

main()

int a[53];

int i,j;

for(i=1;i<=52;i++)

a[i]=1;

for(i=2;i<=52;i++)外循环控制基数增加。

for(j=2;j<=52;j++)内循环控制翻牌。

if(j%i==0)

a[j]=~a[j];/牌翻值取反。

printf("positive upward the number of licenses:")

for(i=1;i<=52;i++)

if(a[i]==1)

printf("%3d",i);/输出数组中值为1的元素的序号。

程序运行结果如下。

算法时间复杂度。

t(n)=n*n

算法空间复杂度。

s(n)为连续的53个内存单位。

通过此程序设计,使我更好的掌握了线性结构。也使我明白了程序设计是一个要先想透使用何种算法,再通过所学反复修改、测试、纠正的过程。更使我树立学好这门课程的信心。

有些问题看似复杂,只要我们弄明白其中的缘由,其实很简单。

1] 严蔚敏、吴伟民·数据结构·清华大学出版社·2024年4月第一版。

2] 谭浩强·c程序设计·清华大学出版社·2024年7月第3版。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...