知识大全 队列的应用实例

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<num;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/22670

相关参考

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

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

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

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

知识大全 栈的应用实例

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

知识大全 Java阻塞队列实例分析与破解

Java阻塞队列实例分析与破解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 第二部分 栈、队列和数组[1]

第二部分栈队列和数组  复习策略栈队列和数组是数据结构的重要工具考察重点偏向于应用对于具体的定义的方式简单清楚就可以重点是理解栈队列的特点熟练掌握栈队列一些经典的应用在编程题中常常会用到栈队列数组作为

知识大全 消息队列在VB.NET数据库开发中的应用

消息队列在VB.NET数据库开发中的应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们先简单

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

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

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

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

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

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