logo资料库

数据结构 课程设计 猴子选大王.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
数据结构实验报告 题目:栈和队列的基本操作(猴子选大王) 班级:计算机 07.5 姓名:董朝 学号:200707149 指导教师: 张艳 完成日期: 2009 年 4 月 21 日
青 岛 理 工 大 学 课程实验报告 数据结构实 验 班级 计算 07.5 董朝 学号 200707149 2009-4-21 实验日 期 实验成 绩 栈和队列的基本操作(猴子选大王) 目的:1.熟练掌握栈的基本操作如初始化栈、判栈为空、出栈、入栈等运算。 2.熟练掌握队列的基本操作如初始化队列、入队、出对、判断队列是否为空等。(根 据不同的题目而定) 要求:独立完成实验任务,程序要求正确并具有一定的健壮性,必须提交电子版和打 印版的实验报告,实验报告要求文字工整通顺、思路清楚、算法描述清楚,内容正确。 WindousXP 系统 Vc 软件 有一群猴子。猴子从头开始循环计数,假若数到某一个特定的数 则这只猴子出队。最后剩下的猴子就是大王(假设猴子已经排好 队)。 课 程 名 称 姓 名 实 验 名 称 实 验 目 的 及 要 求 实 验 环 境 实 验 内 容
1.本程序中数据结构的定义: typedef struct DuLNode { ElemType data; struct DuLNode *next; 算 法 描 述 及 实 验 步 骤 }DuLNode , *Linklist;//定义了一个结构体,其元素为一个元素 和指向自身的指针 其基本操作的定义; Linklist Create( int count) //创建一个无头结点的循 环单链表,并对其数据域的元素按自然数顺序赋值 void Prt() //打印程序菜单 2. 画出函数之间的调用关系图; Main Prn Create
调 试 过 程 及 实 验 结 果 总 结 附 录 输入后字数:8 循环数:3 最后输出:这群猴子的大王就是第 7 只猴子。 程序执行图示如下: 能够很简单的转化进制,使进制转换更加方便,基本.熟练掌握栈的基本操 作如初始化栈、判栈为空、出栈、入栈等运算。熟练掌握队列的基本操作如初 始化队列、入队、出对、判断队列是否为空等 Main.c /* * Created on 2009��3��27��, * File: monkey.c ����5:49 * Author: Administrator */ *
#include "mylist.h" #define EQ == int count; for(i = count;i >= 2;i--) { p = //count 是 在 队 列 中 的 猴 子 (Linklist)malloc(sizeof(DuL 的个数 int n; Node)); if(!p) exit(ERROR); Linklist Create( int count) { p->data = i; p->next = L->next; //创建一个无头结点的 L->next = p; 循环单链表,并对其数据域 } 的元素按自然数顺序赋值 Linklist p,L; i; int L } = return L; (Linklist)malloc(sizeof(DuL void Prt() Node)); { if(!L) exit(ERROR); printf(" 这 是 一 个 猴 子 p = L; L->data = 1; L->next = p; 选大王的游戏。你是动物园 的管理员。你想从这群猴子 中选出一个头头,\n\
让猴子自己管理自己。 head; 猴子从头开始循环计数,假 //定义一个计数指针 point 若数到某一个特定的数则这 Prt(); 只猴子出队。最后\n\ printf("%d。", n); 剩下的猴子就是大王到 point = Create(count); 现在猴子已经排好队。请先 //point 指向第一个元素(第 数数总共有多少猴子。\n"); 一只猴子) scanf("%d",&count); for(j = 1;count != 1;j++) getchar(); //吞掉回车 //j 为循环计数,每执行一步 加一。当队列中还剩一只猴 printf(" 请 指 定 这 个 特 子时退出循环 定的数\n"); { scanf("%d",&n); getchar(); } int main() { if((j+1)%n EQ 0) // 程序关键算法 { q = point->next; printf(" 第 %d 猴 子 出 局 了 , 哈 哈 \n", q->data);// 通 过 取 模 运 算 将 int j; 不幸的猴子删除循环列表 Linklist point, q, point->next =
point->next->next; free(q); count--; } else point = point->next; } printf(" 这 群 猴 子 的 大 王 就 是 第 %d 只 猴 子 。 ", 1; on point->data); return // 1 表示程序执行成功 } Mylist.h /* * File: mylist.h * Author: Administrator * * 2009��3��27��, ����5:31 */ Created #ifndef _MYLIST_H #define _MYLIST_H __cplusplus #ifdef extern "C" { #endif #include #include #include #define 100 #define 10 #define -2 #define OK #define 0 #define -1 #define -2 LIST_INIT_SIZE LISTINCREMENT OVERFLOW 1 ERROR INFEASIBLE OVERFLOW status; typedef int typedef int ElemType; typedef struct DuLNode { ElemType struct DuLNode data; *next; }DuLNode , *Linklist; __cplusplus /* _MYLIST_H */ cout<<x; //输出 #ifdef } #endif #endif } } }
分享到:
收藏