STL中的队列(常用)
#include<queue>
queue<int>q;
q.push();
q.pop();
q.back();
q.front();
q.empty();
q.size();
自己实现链栈
队列定义
struct Queue{
int data
struct queue *next
}*ptr
struct Ptr{
ptr *front
ptr *rear
}q
初始化
void initQueue(Ptr &q){
q.front=q.rear=new Queue
q.front->next=NULL
}
销毁链队列
void destroyQueue(Ptr &q){
while(q.front){
Ptr *p=q.front->next;
delete q.front;
q.front=p;
}
}
入队操作
void push(Ptr &q,int x){
Ptr *p=new Queue
p->data=x
p->next=NULL
q.rear->next=p
q.rear=p
}
出队操作
void pop(Ptr &q){
Ptr *p=q.front->next;
q.front->next=p->next;
if(q.rear==p) q.rear=q.front;
delete p;
}
获取队头元素
int getHead(Ptr &q){
return q.front->next->data;
}
获取队尾元素
int getTail(Ptr &q){
return q.rear->data;
}
判断链队列是否为空
bool isEmpty(Ptr &q){
if(q.front==q.rear) return 1;
else return 0;
}