您的位置:首页 > 其它

顺序队列的创建、入队、出队

2014-05-26 13:17 211 查看
队列的存储结构为顺序存储为顺序队列。其和顺序栈其实是类似的。队列为“先入先出”,栈为“先入后出”。 顺序栈建立时,需要一个栈顶指针,同样的队列的建立也创建一个队首指针front和一个队尾指针rear。初始化时,front=rear=-1。

代码如下:

// SeqQueue.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>

using namespace std;
typedef char type;

#define MaxSize 100
//顺序队列结点
typedef struct queue
{
	type data[MaxSize];
	int front; //队首指针
	int rear;  //队尾指针
}Queue,*SeqQueue;

//初始化队列
void InitQueue(SeqQueue q)
{
	q->front=-1;
	q->rear=-1;
}

//入队操作
bool EnterQueue(SeqQueue q,type data)
{
	//判断队列是否满
	if(MaxSize-1==q->rear)
	{
	  cout<<"队列已满!"<<endl;
	  return false;
	}
	
	q->data[++q->rear]=data;
	return true;
}

//出队操作  返回出队元素
type OutQueue(SeqQueue q)
{
	//判断队列是否为空
	if(q->rear==q->front)
	{
      cout<<"队列为空!"<<endl;
	 	exit(-1);
	}
	type temp=q->data[q->front+1];
	q->front++;
	return temp;
}

//打印队列
void PrintQueue(SeqQueue q)
{
	if(q->rear==q->front)
	{
		exit(-1);
	}

	for(int i=q->front+1;i<=q->rear;i++)
	{
		cout<<q->data[i]<<" ";
	}
	cout<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	type a[5]={'a','b','c','e','f'};

	Queue q;
	InitQueue(&q);
	
	for(int i=0;i<5;i++)  //入队操作
		EnterQueue(&q,a[i]);

	PrintQueue(&q);

	//出队操作
	cout<<OutQueue(&q)<<endl;
	PrintQueue(&q);

	return 0;
}




运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: