1.介绍
与栈一样,队列(queue)也是一种基本的数据结构,也有两种的基本操作:push和pop;与栈不一样的是,操作限制在队列的两端。push是从队尾(rear)插入元素,即入列;pop是从队首删除元素,即出列。在出列过程中,要判断队列是否为空。
队列可以用数组进行模拟,也可以用链表作为存储。
2.问题
2.1 POJ 3125
题目是关于优先级调度,每个job有一个0~9的优先级,优先级高的先打印,同等优先级的在排在队列前面的先打印。
思路:用prio_count[ i ]记录优先级为i的job个数,i的初始值置为9,每一次循环后减1;若i减至priority[m],且队首元素为m,整个循环结束;否则,进入下面的步骤;
通过判断队首优先级==i,若相等,则出列;若不等,则将队首元素插入队尾。
一次提交AC,幸之。
源代码:
3125 |
Accepted |
128K |
0MS |
C++ |
906B |
2013-08-29 15:08:43 |
#include <iostream>
#include <queue>
using namespace std;
#define MAX 100
int main()
{
/*pop_count represents the count of dequeue
prio_count represents the count of priority 0 ~ 9*/
int testcases,n,m,i,pop_count;
int priority[MAX],prio_count[10];
queue<int>que;
scanf("%d",&testcases);
while(testcases--)
{
scanf("%d%d",&n,&m);
/*initialization and clear the queue*/
pop_count=0;
memset(prio_count,0,sizeof(prio_count));
while(!que.empty())
que.pop();
/*push jobs to the queue, get the count of priority 0 ~ 9*/
for(i=0;i<n;i++)
{
scanf("%d",&priority[i]);
prio_count[priority[i]]++;
que.push(i);
}
for(i=9;i>=priority[m];i--)
{
while(prio_count[i])
{
/*indicate that your job gets its turn to print*/
if(i==priority[m]&&que.front()==m)
{
pop_count++;
break;
}
else
{
if(priority[que.front()]==i)
{
que.pop();
pop_count++;
prio_count[i]--;
}
else
{
que.push(que.front());
que.pop();
}
}
}
}
printf("%d\n",pop_count);
}
return 0;
}
分享到:
相关推荐
数据结构队列数据结构作业,队列的相关操作
此源代码为数据结构循环队列,利用结构体创造数据结构队列,初始化,删除,插入,改动的指针操作源代码
数据结构 队列部分 队列的删除、添加等相关操作
数据结构中关于队列的实现代码,数据结构中关于队列的实现代码,
数据结构队列.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
数据结构中队列的操作很重要,这是本人用C语言编写的程序绝对原创!不能说经典但很实用!!
#资源达人分享计划#
数据结构中队列的具体实现,给出了代码,可以加强对队列这一数据结构的理解和应用。希望大家下载后自己实现一下,得出正确的结果,真正的理解这一结构的思想。数据结构中队列的具体实现,给出了代码,可以加强对队列...
确立队列的存储结构,建立队列并完成队列的基本操作的实现。 本程序可以在98/2000/XP下运行,可以用VC++6.0执行
数据结构课设,程序可直接运行,含有实验报告。实现队列的增删改查
本PPT介绍了数据结构的重要的部分,队列。而队列的应用则是非常重要
关于java数据机构部分,队列的总结,队列实现及操作
数据结构第三章题目,关于队列的anyview题目的答案
数据结构开始的顺序存储节点的全部寒素实现代码
数据结构队列头文件,包含队列的基本操作函数
利用队列的性质完成括号匹配的功能。假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或 [([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。检验括号是否匹配的方法可用...
数据结构队列ADT
数据结构队列程序清单,大学生的其中一个程序之一
数据结构 队列存储 附带基础处理函数 附带测试函数