数据结构课程设计报告—纸牌游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课题设计2:扑克牌游戏

1、问题描述

编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的

倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?存储结构:

源程序:#include

void main()

{

int i,j,a[52];

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

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

a[j]=!a[j];

printf("正面向上的牌有:");

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

if(a[i])

printf("%4d",i+1);

}

测试结果:正面向上的牌有:1 4 9 16 25 36 49

算法的时间复杂度:T(n)=O(n2)

课题设计3:joseph环

一. 需求分析:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。首先创建一个空链表,初始化链表,构造出一个只有头结点的空链表,建立好一个约瑟夫环。

1. 输入的形式和输入值的范围

本程序中,输入报数上限值m和人数上限l,密码,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。

2. 输出的形式

从屏幕显示出列顺序。

3. 程序功能

提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序。

二、概要设计

以单向循环链表实现该结构。

1. 抽象数据类型的定义为:

ADT LNode

{

数据对象:D={ai | ai∈CharSet,i= 1,2,…,n,n≥0}

数据关系:R1={< ai-1 ,ai > | ai ∈D,I=2,…,n} 三.源程序:#include

#include

typedef struct Node

{

int key;//每个人持有的密码

int num;//这个人的编号

struct Node *next;//指向下一个节点

}Node,*Link;

void InitList(Link &L) //创建一个空的链表

{

L=(Node *)malloc(sizeof(Node));

if(!L) exit(1);

L->key=0;

L->num=0;

L->next=L;

}

void Creater(int n,Link &L) //初始化链表

{

Link p,q;

q=L;

for(int i=1;i<=n;i++)

{

p=(Node *)malloc(sizeof(Node));

if(!p) exit(1);

printf("the key_%d is:",i);

scanf("%d",&p->key);

p->num=i;

L->next=p;

L=p;

}

L->next=q->next;

free(q);

}

void main()

{

Link L,p,q;

int n,x;

L=NULL;

InitList(L);//构造出一个只有头结点的空链表

printf("please input the totle number of people:"); scanf("%d",&n);//总共的人数n

printf("the start key is:");

scanf("%d",&x);//初始密码为x

Creater(n,L);//建立好一个约瑟夫环

p=L;

for(int i=1;i<=n;i++)

{

for(int j=1;j

p=p->next;

q=p->next;

x=q->key;

printf("%d ",q->num);

p->next=q->next;

free(q);

}

}

四、测试数据:

m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4

输出:6 7 4 1 5 3 2

课题设计4:商品货架管理

1、需求分析:设计一个算法,每一次上货后始终保持生产日期越近的商品越靠近栈底。求货架上剩余货物M、每天销售件数N、员工每天上货工作时间T,三者之间有何关系及T的最小值。

2、源程序:#include

#include"string.h"

#include"stdio.h"

const int maxsize=100;

const int k=10;

#define elemtype char

typedef struct

{

int Month;

int Day;

int Year;

}DATE;

typedef struct

{

int num;

DATE date;

} Node;

class seqstack

{

public:

Node stack[maxsize];

int top;

void inistack()

{

top=0;

}

void push(int x,int day,int month,int year) {

if(top==maxsize)

cout<<"货架已满"<

else

{

top++;

stack[top].num=x;

stack[top].date.Day=day;

相关文档
最新文档