链队列创建及基本操作

132 阅读1分钟

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;
}