
这样的话应该符合你的要求:
#include<stdioh>void add(int queue[],int x);
int Top(int queue[]);
void del(int queue[]);
int end=0;
int main()
{
int n;
int queue[1000];
for(int i=1;i<=n;i++)//输入n个元素
{
add(queue,i);//将i加入队列
}
//验证加入队列的元素,将队列中的元素按照输入的顺序输出:
for( i=1;i<=n;i++)
{
printf("%d ",Top(queue));//Top函数返回队头元素
del(queue);//删除队头元素
}
//验证输出已经出队列后的队列(数组)元素:
printf("\n");
for(i=1;i<=n;i++)
printf("%d ",queue[i]);
printf("\n");
return 0;
}
void add(int queue[],int x)
{
queue[++end]=x;
}
int Top(int queue[])
{
return queue[1];//注意,这里的函数始终return queue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
void del(int queue[])
{
for(int i=2;i<=end;i++)
{
queue[i-1]=queue[i];
}
queue[end]=0;//将删除后的地方置0
end--;
}
queue
queue是STL中现成的队列容器,我们只需要了解他的相关函数及使用方法,即可很方便的帮助我们使用队列这个数据结构。
1头文件:
#include < queue >
2变量声明:
queue < 数据类型 >变量名
例queue < int >a; 即声明了一个int型的队列a
同理,也可声明queue < string > b; queue < struct node > c;
3相关函数:
(1)qpush(x) :即向队列q的队尾插入数据x
#include<queue>
queue<int> q;
qpush(5);
cout << qfront() << endl;
1
2
3
1
2
3
(2)qfront():此函数没有参数,是指返回队首的值(只返回此值,并不从队中删除)
queue<string> q;
qpush("hello");
qpush("world");
cout << qfront() << endl;
1
2
3
1
2
3
(3)qpop():此函数没有参数,指删除队首元素
queue<double> q;
qpush(53);
qpush(8);
cout << qfront() << '\n';
qpop();
cout << qfront() << '\n';
1
2
3
4
5
6
1
2
3
4
5
6
(4)qback():此函数没有参数,返回队尾元素的值
queue<double> q;
qpush(53);
qpush(8);
cout << qback() << endl;
1
2
3
1
2
3
(5)qempty():此函数没有参数,判断队列是否为空,若队空,则返回真(1)
queue<int> q;
cout << qempty() << endl;
qpush("3");
cout << qempty() << endl;
1
2
3
1
2
3
(6)qsize():此函数没有参数,返回队列元素个数
queue<double> q;
qpush(53);
qpush(8);
cout << qsize() << '\n';
1
2
3
4
1
2
3
4
二、priority_queue
int Succ (int Value, Queue Q )
Value 是 要插到哪里去
如果value太大,大于队列的容量,就让他插到队列的头去,重头再来一遍。懂了没?
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)