logo资料库

数据结构课程设计报告敢死队问题.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
(数据结构课程设计)
3.删除
当报数到死亡数字时队员出列去执行任务,删除该节点。
功能设计本程序其实质是约瑟夫环问题,本次实验用了线性表数据结构,并运用模块化的程序设计思想,算法的实
定义类类型
功能设计
算法流程图
华 北 科 技 学 院 课程设计说明书 (数据结构课程设计) 班级: 信管 B08-1 姓名: 陈秋苗 学号: 200807034118 设计题目: 敢死队问题 评 设计时间:__2010-9-6_____至___2010-9-17____ 芸__________________ 指导教师:______兰 语:________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:__ __评阅教师:__ ___
《数据结构》课程设计实验报告 开课实验室: 基础实验室 一 实验题目 敢死队问题 2010 年 9 月 16 日 1.实验题目 敢死队问题 2.实验设备及环境 PC 兼容机、Windows 操作系统、VB 软件等。 3.功能模块简介和系统结构图 系统结构图 本程序有四个功能模块,包括三个解决敢死队问题方案的模块和一个退出系统模块。三 个解决方案分别采用了循环聊表储存结构、线性表储存结构、循环队列储存结构。功能模块 如下图所示。 敢死队问题 循环单链表储 线性表储存 循环队列储存 退出 存结构 结构 结构 功能模块具体简介如下: (1).循环单链表 以单循环链表为存储结构,包含三个模块: 1.主程序模块 包含敢死队人数的输入,死亡数字的输入,函数的调用,结果的输出。 2.构造链表并初始化 构造链表,给每个结点赋值,给队员编号。 3.删除 当报数到死亡数字时队员出列去执行任务,删除该节点。 2 2
开始 声明类型 定义变量并初始化 初始化单链表循环模块 输入敢死队员总数 剩下的队员 数>1? 队员报数 报数值=死亡数? 队员出列 输出结果 (2).线性表储存结构 功能设计本程序其实质是约瑟夫环问题,本次实验用了线性表数据结构, 并运用模块化的程序设计思想,算法的实现是这样的: 定义类类型 1. 定义变量并初始化 2. 线性表初始化 3. 当队员数小于等于 1 时,输出结果 3 3
算法流程图 开始 声明数据类型 定义变量并初始化 初始化线性表 输入敢死队员总数 增加存储分配 敢死队员人数>线性 表长度 剩下的队员 数>1? 队员报数 报数值=5? 队员出列 输出 循环队列储存结构解决 功能设计 本程序其实质是约瑟夫环问题,本次实验用了循环队列数据结构,并运用模块化的程序设计思想,算法 的实现是这样的: 这个方法是用队列循环来做的,实现的方法是这样的:首先从第一号开始报数,循环到指定的偏移 位置删除结点,直至剩下一个结点。然后再比较一下它的号码是不是等于 1,如果等于则输出开始计数 位置,如果不等,继续循环查找,直到找出符合条件的计数起始位置,输出结果。 算法流程图 4 4
开始 声明数据类型 定义变量并初始化 初始化循环队列 输入敢死队员总数 增加存储分配 队列满? 剩下的队员 数>1? 给队员编号入队列 队员报数 报数值=5? 队员出列即清零 输出 4. 系统的主要界面设计及运行说明: 进入用户主界面,选者实现结果的方法 5 5 编号=1?
以 10 个队员,死亡数字为 5 来运行,结果如下 选择第 2 项功能,运用线性表储存结构 6 6
7 7 选择第 3 项功能,运用循环队列来实现结果 5.程序的主要代码: #include #include #include #include //-------------------循环单链表---------------------------------------------- typedef struct node { int data; struct node *next; }LNode;/* 定义结点类型 */
LNode* CREAT(int n) /* 创建循环链表 */ { LNode *s,*q,*T; int i; if(n!=0) { T=q=(LNode *)malloc(sizeof(LNode)); q->data=1;/* 生成第一个结点并使其 data 值为 1 */ for(i=2;i<=n;i++) { s=(LNode *)malloc(sizeof(LNode)); q->next=s; q->next->data=i;/*赋值*/ q=q->next; } q->next=T; } return T; } DELETE (LNode* T,int m)/* 链表的删除 */ { LNode *a;int i; while (T->next!=T) { for (i=1;inext; a=T->next; T->next=a->next; free(a); T=T->next; } printf("\n"); return (T->data); } //-------------------------------------------------------------------------- //----------------线性表----------------------------------------------------- #define LIST_INIT_SIZE 100 #define LISTINCCREMENT 10 #define OK 1 #define ERROR 0 typedef int ElemType; typedef struct KList { /*定义数据结构体类型*/ ElemType *elem; /*存储空间基址*/ 8 8
分享到:
收藏