当前位置: 首页 > news >正文

兰州企业网站排名优化温州专业微网站制作公司

兰州企业网站排名优化,温州专业微网站制作公司,东莞建英文网站的公司,wampserver搭建网站第三部分、栈(Stack)和队列(Queue)详解 栈和队列#xff0c;严格意义上来说#xff0c;也属于线性表#xff0c;因为它们也都用于存储逻辑关系为 一对一 的数据#xff0c;但由于它们比较特殊#xff0c;因此将其单独作为一章#xff0c;做重点讲解。 使用栈… 第三部分、栈(Stack)和队列(Queue)详解 栈和队列严格意义上来说也属于线性表因为它们也都用于存储逻辑关系为 一对一 的数据但由于它们比较特殊因此将其单独作为一章做重点讲解。 使用栈结构存储数据讲究“先进后出”即最先进栈的数据最后出栈使用队列存储数据讲究 先进先出即最先进队列的数据也最先出队列。 既然栈和队列都属于线性表根据线性表分为顺序表和链表的特点栈也可分为顺序栈和链表队列也分为顺序队列和链队列这些内容都会在本章做详细讲解。 十一、[数据结构实践项目]扑克牌游戏包含C语言实现代码 小时候在刚开始接触扑克牌的时候最初学会的扑克游戏就是类似于“推小车”这样的无脑游戏本节带领大家使用学过的知识编写推小车卡牌游戏。 “推小车”扑克牌游戏适合 2-3 个人玩游戏规则也超级简单将一副扑克牌平均分成两份每人拿一份每个人手中的扑克牌全部反面朝上叠成一摞。游戏进行时每个人轮流拿出第一张扑克牌放到桌上将其排成一竖行。如果打出的牌与桌上某张牌的数字红桃 5 和黑桃 5 在此游戏中相等相等即可将两张相同的牌以及两张中间所夹的所有的牌全部取走每次取走的一小摞牌都必须放到自己本摞的下面。 游戏过程中一旦有人手中没有牌则宣布另一人获胜同时游戏结束。 1、设计思路 假设模拟两个人进行该扑克牌游戏。每个人在游戏过程中都是不断地从自己这一摞扑克牌的最上方去取牌放到桌子上当发现自己的牌同桌子上的牌相等时将赢得的牌依次放在自己扑克牌的下方。这是典型的队列的“先进先出”。而对于桌子而言就相当于是一个栈。每次放到桌子上的扑克牌都相当于进栈当有相同的扑克牌时相同的扑克牌连通之间的所有的扑克牌则依次出栈。 所以模拟该扑克牌游戏需要同时使用 2 个队列和 1 个栈。 2、实现代码 #include stdio.h #include stdlib.h struct queue {         int data[1000];         int head;         int tail; }; struct stack {         int data[10];         int top; }; void showCard(struct queue *q,int *book,struct stack *s){         int t(*q).data[(*q).head]; //打出一张牌即从队列 q 的队头取元素此时还不往桌子的栈里放         //判断取出的这张牌是否会赢牌         if(book[t]0){ //若不赢牌只需放到桌子上入栈即可                 (*q).head;//由于此时牌已经打出所以队列的队头需要前进                 (*s).top;                 (*s).data[(*s).top]t; //再把打出的牌放到桌上即入栈                 book[t]1; //标记桌上现在已经有牌面为t的牌         }         else{                 (*q).head;//由于此时已经打出去一张牌所以队头需要 1                 (*q).data[(*q).tail]t;//将打出的牌放到手中牌的最后再入队                 (*q).tail;                 //把桌子上赢得的牌依次放到手中牌的最后依次出栈在入队列的过程 while((*s).data[(*s).top]!t){ book[(*s).data[(*s).top]]0;//取消对该牌号的标记 (*q).data[(*q).tail](*s).data[(*s).top];//依次放入队尾 (*q).tail; (*s).top--; } //最后别忘了将最后一张相等的牌取出放入队列 book[(*s).data[(*s).top]]0; (*q).data[(*q).tail](*s).data[(*s).top]; (*q).tail; (*s).top--; } } int main() {         struct queue q1,q2;//两个队列分别模拟两个人假设分别为小王和小李         struct stack s;//栈模拟桌子         int book[14];//为了便于判断桌子上的牌是否有相同的增加一个数组用于判断         int i;         //初始化队列         q1.head0; q1.tail0;         q2.head0; q2.tail0;         //初始化栈         s.top-1;         //初始化用来标记的数组         for(i0;i13;i)                 book[i]0;         //假设初期每个人手中仅有 6 张牌每个人拥有的牌都是随机的但都在 1-13 之间         for(i1;i6;i){                 q1.data[q1.tail]rand()%131;                 q1.tail;         }         for(i1;i6;i){                 q2.data[q2.tail]rand()%131;                 q2.tail;         }         //仅当其中一个人没有牌时游戏结束         while(q1.headq1.tail q2.headq2.tail ){        showCard(q2, book, s);//小李出牌                 showCard(q1, book, s);//小王出牌         }         //游戏结束时输出最后的赢家以及手中剩余的牌数         if(q2.headq2.tail){                 printf(小李赢\n);                 printf(手中还有%d 张牌,q1.tail-q1.head);         }         else{                 printf(小王赢\n);                 printf(手中还有%d 张牌,q2.tail-q2.head);         }         return 0; } 运行结果 小王赢 手中还有7 张牌 十二、栈和队列是线性结构包含栈和队列的区别和共同点 很多学员问栈和队列是线性结构吗这里再次强调栈和队列是线性结构。 数据结构中如果想知道存储结构之间是否相同和类似只需要比对它们存储的目标数据之间的逻辑关系即可所存储数据的逻辑关系相同则说明它们是同一类存储结构反之则不是。 通过前面的学习我们知道线性结构即用于存储逻辑关系为 一对一 数据的存储结构例如顺序存储结构和链式存储结构。 图 1 栈存储结构 回过头再分析栈如图 1 所示栈结构中存储的也是逻辑关系为 一对一 的数据只不过该结构对数据的存储顺序有额外的要求即数据进栈和出栈要满足 先进后出 的要求。因此可以这么说栈是一种特殊的线性存储结构。 图 2 队列存储结构 那么队列存储结构如图 2 所示呢同栈一样它存储的也是逻辑关系为 一对一 的数据但它对数据入队和出队的要求是 先进先出。所以说队列也是一种特殊的线性存储结构。总的来说栈和队列是线性存储结构只不过它们比较 特殊 而已。 栈和队列除了都是线性结构外还有一个共同点那就是数据的进出只能在栈和队列的端点处进行。换句话说栈结构中数据的入栈和出栈只能在开口的一端进行队列中数据从一端进从另一端出。栈和队列最大的区别就是栈结构中存储数据要求 先进后出队列存储数据要求 先进先出。
http://www.dnsts.com.cn/news/142644.html

相关文章:

  • 杭州建设信用网官网网站建设优化陕西
  • 东莞网站建设如何做wordpress 2.5
  • 医院网站模板 html网站内容描述
  • 做网站公司上班违法吗各大门户网站有哪些
  • 创建网站大约品牌建设金点子
  • 站长统计幸福宝2022年排行榜网站备案公共查询
  • 需要服务器的网站网站集群建设必要性
  • 西安十强互联网站建设公司台州汇客网站建设
  • 服务专业的网站建站公司免费发布项目的网站
  • 北京网站建设方案品牌公司咸宁网站seo排名
  • 广州建设交易中心网站首页wordpress主题模板 教育
  • 重庆万州网站建设公司电话wordpress主题制作豆丁
  • 做网站什么配置够用网站策划书格式及范文1000字免费
  • 电商网站系统建设wordpress网站流量
  • 广东网站制作公司排名justnews主题wordpress
  • 专业佛山网站建设海口网站建设平台
  • 建设一个招聘网站大概多少费用可以免费进的服务器网站
  • 网站建设 软件开发的公司排名seo与网络推广的区别和联系
  • dedecms网站的源码如何安装十个有趣又好玩的网页
  • 网站做二维码吗网站备案是怎么回事
  • 网站方案制作的培训最新室内设计效果图
  • 做直播教程的网站花店网页设计模板
  • 贵州新站优化响应式网页设计简单
  • 重庆市建设工程信息网官方网站平台网站是什么
  • 点击图片是网站怎么做的手机网站制作代理
  • 旅游景区网站建设的必要性在线做漫画的网站好
  • 做淘宝网站买个模版可以吗seo优化是利用规则提高排名
  • 游民星空是用什么做的网站北京++网站建设咨询顾问公司
  • 深圳网站有哪些深圳百度代理
  • 河北软件开发网站建设o2o网站系统建设