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

上传人:b****5 文档编号:7416945 上传时间:2023-01-23 格式:DOCX 页数:17 大小:35.21KB
下载 相关 举报
数据结构课程设计报告纸牌游戏.docx_第1页
第1页 / 共17页
数据结构课程设计报告纸牌游戏.docx_第2页
第2页 / 共17页
数据结构课程设计报告纸牌游戏.docx_第3页
第3页 / 共17页
数据结构课程设计报告纸牌游戏.docx_第4页
第4页 / 共17页
数据结构课程设计报告纸牌游戏.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

《数据结构课程设计报告纸牌游戏.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告纸牌游戏.docx(17页珍藏版)》请在冰豆网上搜索。

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

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

课题设计2:

扑克牌游戏

1、问题描述

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

这时正面向上的牌有哪些?

存储结构:

源程序:

#include

voidmain()

{

inti,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);

}

测试结果:

正面向上的牌有:

14916253649

算法的时间复杂度:

T(n)=O(n2)

课题设计3:

joseph环

一.需求分析:

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

首先创建一个空链表,初始化链表,构造出一个只有头结点的空链表,建立好一个约瑟夫环。

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

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

2.输出的形式

  从屏幕显示出列顺序。

3.程序功能

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

二、  概要设计

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

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

ADTLNode

{

  数据对象:

D={ai|ai∈CharSet,i=1,2,…,n,n≥0}

  数据关系:

R1={<ai-1,ai>|ai∈D,I=2,…,n}

三.源程序:

#include

#include

typedefstructNode

{

intkey;//每个人持有的密码

intnum;//这个人的编号

structNode*next;//指向下一个节点

}Node,*Link;

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

{

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

if(!

L)exit

(1);

L->key=0;

L->num=0;

L->next=L;

}

voidCreater(intn,Link&L)//初始化链表

{

Linkp,q;

q=L;

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

{

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

if(!

p)exit

(1);

printf("thekey_%dis:

",i);

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

p->num=i;

L->next=p;

L=p;

}

L->next=q->next;

free(q);

}

voidmain()

{

LinkL,p,q;

intn,x;

L=NULL;

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

printf("pleaseinputthetotlenumberofpeople:

");

scanf("%d",&n);//总共的人数n

printf("thestartkeyis:

");

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

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

p=L;

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

{

for(intj=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

输出:

6741532

课题设计4:

商品货架管理

1、需求分析:

设计一个算法,每一次上货后始终保持生产日期越近的商品越靠近栈底。

求货架上剩余货物M、每天销售件数N、员工每天上货工作时间T,三者之间有何关系及T的最小值。

2、源程序:

#include

#include"string.h"

#include"stdio.h"

constintmaxsize=100;

constintk=10;

#defineelemtypechar

typedefstruct

{

intMonth;

intDay;

intYear;

}DATE;

typedefstruct

{

intnum;

DATEdate;

}Node;

classseqstack

{

public:

Nodestack[maxsize];

inttop;

voidinistack()

{

top=0;

}

voidpush(intx,intday,intmonth,intyear)

{

if(top==maxsize)

cout<<"货架已满"<

else

{

top++;

stack[top].num=x;

stack[top].date.Day=day;

stack[top].date.Month=month;

stack[top].date.Year=year;

}

}

voidpop()

{

if(top==0)

cout<<"货架已空"<

else

top--;

}

elemtypegettop()

{

if(top==0)

cout<<"货架已空"<

else

returntop;}

boolempty()

{

returntop==0;

}

};

voidmain()

{

seqstackc[k+1];//存放k种商品的数组,用c[0]来做中介货架

intTxq[k+1];//第i种取货用的时间

intTxs[k+1];//第i种上货用的时间

intNx[k+1];//第i种每天的销售数量

intN=0;//每天销售总量

intTx[k+1];//第i种每天上货的总时间

intT=0;//每天上货用的总时间

charyn='Y';

for(inti=1;i<=k;i++)

{

cout<<"******************************"<

cout<<"商品货架管理系统"<

cout<<"******************************"<

Nodestore[20];

charyear,month;

intcount;//货架上第i种商品的数目

intx,d,m,y;//x为第i种商品的序号

cout<<"请输入货架上第"<

"<

cout<<"(序号,生产日期(年、月、日如2006.2.13),现在货架上的存货数目,上货用时和取货用时)"<

cin>>x>>y>>year>>m>>month>>d>>count>>Txs[i]>>Txq[i];

Nx[i]=maxsize-count;

cout<<"货架上还需上"<

Tx[k]=Txs[i]*(maxsize+count)+2*Txq[i]*count;

cout<<"该货架满货需要用时"<

cout<<"是否要上货?

(Y/N)"<

cin>>yn;

if(yn=='Y'||yn=='y')

{

intnumbers,nian,yue,ri;

cout<<"请输入要上货物的数目及生产日期(年、月、日)"<

cin>>numbers>>nian>>yue>>ri;

if(numbers>maxsize-count)

{

cout<<"要上的货物数目超出了货架的最大容量,请重新输入"<

cin>>numbers>>nian>>yue>>ri;

}

for(intj=1;j<=numbers;j++)

{

}

}

N+=Nx[i];

T+=Tx[i];

}

cout<<"每天销售总量为:

"<

cout<<"每天上货用的总时间为:

"<

}

3、测试结果:

 

五、课程设计5:

航空客运订票系统

 

1、需求分析:

对于本设计,可采用基数排序法对于一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快递查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用的较少。

2、源程序:

#include

#include

#definemaxspace100

#definekeylen7

#defineradix_n10

#defineradix_c26

typedefcharkeytype;

typedefstruct

{

charstart[6];

charend[6];

charsche[10];

chartime1[5];

chartime2[5];

charmodel[4];

intprice;

}infotype;

typedefstruct

{

keytypekeys[keylen];

infotypeothers;

intnext;

}slnode;

typedefstruct

{

slnodesl[maxspace];

intkeynum;

intlength;

}sllist;

typedefintarrtype_n[radix_n];

typedefintarrtype_c[radix_c];

voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne)

{

intj,p;

for(j=0;j

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%48;

if(!

f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

voidcollect(slnode*sl,inti,arrtype_nf,arrtype_ne)

{

intj,t;

for(j=0;!

f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j

{

for(j=j+1;j

f[j];j++);

if(f[j])

{

sl[t].next=f[j];

t=e[j];

}

}

sl[t].next=0;

}

voiddistribute_c(slnode*sl,inti,arrtype_cf,arrtype_ce)

{

intj,p;

for(j=0;j

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%65;

if(!

f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

voidcollect_c(slnode*sl,inti,arrtype_cf,arrtype_ce)

{

intj,t;

for(j=0;!

f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j

{

for(j=j+1;j

f[j];j++);

if(f[j])

{

sl[t].next=f[j];

t=e[j];

}

}

sl[t].next=0;

}

voidradixsort(sllist&l)//链式

{

inti;

arrtype_nfn,en;

arrtype_cfc,ec;

for(i=0;i

l.sl[i].next=i+1;

l.sl[l.length].next=0;

for(i=l.keynum-1;i>=2;i--)

{

distribute(l.sl,i,fn,en);

collect(l.sl,i,fn,en);

}

for(i=1;i>=0;i--)

{

distribute_c(l.sl,i,fc,ec);

collect_c(l.sl,i,fc,ec);

}

}

voidarrange(sllist&l)//重新整理

{

intp,q,i;

slnodetemp;

p=l.sl[0].next;

for(i=1;i

{

while(p

p=l.sl[p].next;

q=l.sl[p].next;

if(p!

=i)

{

temp=l.sl[p];

l.sl[p]=l.sl[i];

l.sl[i]=temp;

l.sl[i].next=p;

}

p=q;

}

}

intbinsearch(sllistl,keytypekey[])

{

intlow,high,mid;

low=1;

high=l.length;

while(low<=high)

{

mid=(low+high)/2;

if(strcmp(key,l.sl[mid].keys)==0)

returnmid;

elseif(strcmp(key,l.sl[mid].keys)<0)

high=mid-1;

else

low=mid+1;

}

return0;

}

voidseqsearch(sllistl,keytypekey[],inti)

{

intj,k,m=0;

printf("*************************************************************\n");

printf("*航班号起点站终点站航班期起飞时间到达时间机型票价*\n");

for(j=1;j<=l.length;j++)

{

switch(i)

{

case2:

k=strcmp(key,l.sl[j].others.start);break;

case3:

k=strcmp(key,l.sl[j].others.end);break;

case4:

k=strcmp(key,l.sl[j].others.time1);break;

case5:

k=strcmp(key,l.sl[j].others.time2);break;

}

if(k==0)

{

m=1;

printf("*%-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d*\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);

}

}

if(m==0)

printf("*无此航班信息,可能是输入错误!

*\n");

printf("*************************************************************\n");

}

voidsearchcon(sllistl)

{

keytypekey[keylen];

inti=1,k;

while(i>=1&&i<=5)

{

printf("\n********************\n");

printf("*航班信息查询系统*\n");

printf("********************\n");

printf("*1.航班号*\n");

printf("*2.起点站*\n");

printf("*3.终点站*\n");

printf("*4.起飞时间*\n");

printf("*5.到达时间*\n");

printf("*0.退出系统*\n");

printf("********************\n");

printf("请选择(0-5):

");

scanf("%d",&i);

printf("\n");

switch(i)

{

case1:

printf("输入要查询的航班号(字母要大写):

");

scanf("%s",key);

k=binsearch(l,key);

printf("*************************************************************\n");

if(k==0)

printf("*无此航班信息,可能是输入错误!

*\n");

else

{

printf("*航班号起点站终点站航班期起飞时间到达时间机型票价*\n");

printf("*%-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d*\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);

}

printf("*************************************************************\n");

break;

case2:

printf("输入要查询的航班起点站名:

");

scanf("%s",key);

seqsearch(l,key,i);

break;

case3:

printf("输入要查询的航班终点站名:

");

scanf("%s",key);

seqsearch(l,key,i);

break;

case4:

printf("输入要查询的航班起飞时间:

");

scanf("%s",key);

seqsearch(l,key,i);

break;

case5:

printf("输入要查询的航班到达时间:

");

scanf("%s",key);

seqsearch(l,key,i);

break;

case0:

printf("\n\n\n再见\n\n\n");

}

}

}

voidinputdata(sllist&l)

{

inti=++l.length;

charyn='y';

while(yn=='y'||yn=='Y')

{

printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n");

scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);

++i;getchar();

radixsort(l);

arrange(l);

printf("继续输入吗?

y/n:

");

scanf("%c",&yn);

}

l.length=i-1;

}

voidmain()

{

sllistl;

l.keynum=6;

l.length=0;

inputdata(l);

searchcon(l);

}

3、测试结果:

航班信息:

航班号起点站终点站航班期起飞时间到达时间机型票价

输入:

CA1544合肥北京1.2.4.510551240733960

提示:

继续输入吗?

y/n:

y

显示:

航班号起点站终点站航班期起飞时间到达时间机型票价

MU5341上海广州每日14201615M901280

提示:

继续输入吗?

y/n:

y

……

提示:

继续输入吗?

y/n:

n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1