知识大全 栈和队列 - 栈和队列的应用实例 - 队列的应用实例

Posted

篇首语:眼前多少难甘事,自古男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 栈和队列 - 栈和队列的应用实例 - 队列的应用实例相关的知识,希望对你有一定的参考价值。

  队列的应用 舞伴问题

   问题叙述

  假设在周末舞会上 男士们和女士们进入舞厅时 各自排成一队 跳舞开始时 依次从男队和女队的队头上各出一人配成舞伴

  若两队初始人数不相同 则较长的那一队中未配对者等待下一轮舞曲 现要求写一算法模拟上述舞伴配对问题

   问题分析

  先入队的男士或女士亦先出队配成舞伴 因此该问题具体有典型的先进先出特性 可用队列作为算法的数据结构

  在算法中 假设男士和女士的记录存放在一个数组中作为输入 然后依次扫描该数组的各元素 并根据性别来决定是进入男队还

  是女队 当这两个队列构造完成之后 依次将两队当前的队头元素出队来配成舞伴 直至某队列变空为止 此时 若某队仍有等待配

  对者 算法输出此队列中等待者的人数及排在队头的等待者的名字 他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人

   具体算法及相关的类型定义

  typedef struct

  char name[ ];

  char sex; //性别 F 表示女性 M 表示男性

  Person;

  typedef Person DataType; //将队列中元素的数据类型改为Person

  void DancePartner(Person dancer[] int num)

  //结构数组dancer中存放跳舞的男女 num是跳舞的人数

  int i;

  Person p;

  CirQueue Mdancers Fdancers;

  InitQueue(&Mdancers);//男士队列初始化

  InitQueue(&Fdancers);//女士队列初始化

  for(i= ;i

  p=dancer[i];

  if(p.sex==\'F\')

  EnQueue(&Fdancers.p); //排入女队

  else

  EnQueue(&Mdancers.p); //排入男队

  

  printf("The dancing partners are: \\n \\n");

  while(!QueueEmpty(&Fdancers)&&!QueueEmpty(&Mdancers))

  //依次输入男女舞伴名

  p=DeQueue(&Fdancers); //女士出队

  printf("%s ",p.name);//打印出队女士名

  p=DeQueue(&Mdancers); //男士出队

  printf("%s\\n",p.name); //打印出队男士名

  

  if(!QueueEmpty(&Fdancers)) //输出女士剩余人数及队头女士的名字

  printf("\\n There are %d women waitin for the next round.\\n",Fdancers.count);

  p=QueueFront(&Fdancers); //取队头

  printf("%s will be the first to get a partner. \\n",p.name);

  else

  if(!QueueEmpty(&Mdancers))//输出男队剩余人数及队头者名字

  printf("\\n There are%d men waiting for the next round.\\n",Mdacers.count);

  p=QueueFront(&Mdancers);

  printf("%s will be the first to get a partner.\\n",p.name);

  

  //DancerPartners

cha138/Article/program/sjjg/201311/23917

相关参考

知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(二)

  栈与递归  ()递归  所谓递归是指若在一个函数过程或者数据结构定义的内部直接(或间接)出现定义本身的应用则称它们是递归的或  者是递归定义的  递归是一种强有力的数学工具它可使问题的描述和求解变

知识大全 数据结构之栈和队列的应用实例

栈与队列的比较 栈与递归cha138/Article/program/sjjg/201311/23214

知识大全 栈的应用实例

  栈和队列的应用非常之广只要问题满足后进先出和先进先出原则均可使用栈和队列作为其数据结构栈的应用数制转换  将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题很容易通过除B取余法来解决

知识大全 栈和队列 - 栈 - 栈的定义及基本运算

  栈和队列是两种特殊的线性表它们的逻辑结构和线性表相同只是其运算规则较线性表有更多的限制故又称它们为运算受限  的线性表栈和队列被广泛应用于各种程序设计中  栈的定义及基本运算  栈的定义  栈(S

知识大全 数据结构考研分类复习真题 第三章 栈和队列[24]

  假设以带头结点的循环链表表示队列并且只设一个指针指向队尾结点但不设头指针如图所示(编者略)请写出相应的入队列和出队列算法【西安电子科技大学计应用六(分)】  如果允许在循环队列的两端都可以进行插入

知识大全 数据结构考研分类复习真题 第三章 栈和队列[15]

  四 应用题  名词解释栈【燕山大学一(分)】【吉林工业大学一(分)】  名词解释队列【大连海事大学  一(分)】  什么是循环队列?【哈尔滨工业大学三(分)】【河南大

知识大全 栈和队列 - 队列 - 顺序队列

  顺序队列  顺序队列  ()顺序队列的定义  队列的顺序存储结构称为顺序队列顺序队列实际上是运算受限的顺序表  ()顺序队列的表示  ①和顺序表一样顺序队列用一个向量空间来存放当前队列中的元素  

知识大全 栈和队列 - 队列 - 链队列

  链队列的定义  队列的链式存储结构简称为链队列它是限制仅在表头删除和表尾插入的单链表  链队列的结构类型说明  >  注意  增加指向链表上的最后一个结点的尾指针便于在表尾做插入操作  链队列示意

知识大全 栈和队列 - 队列 - 队列的定义及基本运算

  定义  队列(Queue)是只允许在一端进行插入而在另一端进行删除的运算受限的线性表  >  ()允许删除的一端称为队头(Front)  ()允许插入的一端称为队尾(Rear)  ()当队列中没有

知识大全 数据结构第三章(栈和队列)串讲+复习要点

  第三章栈和队列  本章介绍的是栈和队列的逻辑结构定义及在两种存储结构(顺序存储结构和链式存储结构)上如何实现栈和队列的基本运算本章的重点是掌握栈和队列在两种存储结构上实现的基本运算难点是循环队列中