实验一 线性表的应用.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一   线性表的应用(一) ——体育彩票的模拟生成和兑奖 一、实验目的与要求 熟悉线性表数据结构的定义及顺序存储,会使用线性表的基本操作解决一些实际问题。 二、实验内容 用线性表实现体育彩票的模拟生成和兑奖。 三、实验指导 1.实验描述 模拟36选7的中国体育彩票。从1~36这36个数中随机取出7个数作为一张彩票 的号码,随机生成若干张彩票,并和指定的中奖号码(设有7个号码)进行比较,判断中奖情况。 2.实验分析 一张彩票的号码可以用一个线性表表示,因其长度是固定的,故可用顺序表表示,这里我们称其为彩票号码表。 随机生成彩票,最直接的方法就是产生l~36间的随机数。若该数不在彩票号码表 中,则将其插入到彩票号码表中;否则,舍弃该数。重复产生随机数,直至彩票号码表 中的号码个数达到指定的个数7。 显然,上面的方法中产生随机数的次数是不确定的,因为可能有重复的数,显然该算法的效率较低。 彩票生成的另一种方法是:备选数是一个集合,该集合也可以采用线性表表示,只是元素间的顺序可以随意指定,我们不妨称其为备选数表,备选数表初始状态含有l~36这36个数。根据备选数表的长度产生一个随机数,用该随机数作为位置序号,将备选数表中该位置的数作为彩票的一个号码,将其从备选数表中删除,并插入到彩票号码表中。重复这一操作,每次都能得到一个不同的号码,所以循环指定的次数(一张彩票中号码的个数)即可得到一张彩票。 备选数表的初始化,备选数表初始状态含有1~36这36个数,元素间的顺序没有意义。为了提高初始化的效率,不用每次生成彩票前重新初始化备选数表中的各个分量,当选定备选数表中的一个元素作为彩票的一个号码时,将该号码插入到彩票号码表中,并将其从备选数表中删除。删除元素时,不将其后的所有元素依次前移,而只是将被删除元素与备选数表当前的最后一个元素互换,备选数表的长度减1即可。这样,被选数表的删除操作简化了,同时备选数表的初始化操作也简化了。 判断中奖情况,就是先初始化猜对号码个数为0,再依次用中奖号码表中的每个号码,在一张彩票号码表中查找,若有,猜对号码个数加1。处理完毕,猜对号码个数即可反映中奖情况。 3.解决方案 (1)彩票号码表、备选数表的存储结构类型定义 #define MM 7 /*彩票中号码的个数*/ #define NN 36 /*选数的个数*/ typedef int ElemTp; /*元素类型*/ typedef struct { ElemTp elem[MM+1]; int len; /*表长*/ } VoteTp; /*彩票号码表的类型*/ typedef struct { ElmTp elem[NN+1]; int len; /*表长*/ } sourceTp; /*备选数表的类型*/ (2)主要算法 彩票的生成方法、判断彩票的中奖情况的N-S图,如图1.1、图1.2所示。 图1.1 彩票的生成方法 图1.2 判断彩票的中奖情况 票的生成方法、判断彩票的中奖情况的C语言程序如下。 VoteTp CreateAVote() /* 生成一张彩票vote*/ { VoteTp vote; ElemTp k,temp; int i; InitializeVote(vote); source.len=NN; /*初始化备选数表source*/ for(i=1;i=MM;i++) { k= rand() % source.len+1; /* 将source.elem[k]插入到彩票号码表vote中 , 产生一个l到source.len的随机数k */ SeqInsertVote(vote,vote.len+1,source.elem[k]); /*将备选数表source中的第k个元素删掉,Source.el em[k]与source.elem[source.len]交换,将备选数表表长source.1en减l */ temp=source.elem[k]; source.elem[k]=source.elem[source.len]; source.elem[source.len]=temp; source.len=source.len-1; } return vote; } int RightNum(VoteTp vote,VoteTp answervo

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档