数据结构之栈和队列(四)

队列也是一种特殊的线性表,其特点是先进先出,顺序存储结构的队列存在数组溢出的情况,所以一般选择链式存储结构。

1.头文件queue.h

typedef int ElemType;

typedef struct Node
{
	ElemType data;
	struct Node *next;
}QueueNode,*QueuePtr;

typedef struct NodeFlag
{
	QueuePtr front,rear;
}LinkQueue;

//创建队列
bool CreateQueue(LinkQueue &Q);
//进队列
bool InQueue(LinkQueue &Q,ElemType e);
//出队列
bool OutQueue(LinkQueue &Q);
//打印队列
bool print(LinkQueue Q);

2.queue.cpp

#include 
#include 
#include "queue.h"

bool CreateQueue(LinkQueue &Q)
{
	QueuePtr q;
	if(q=(QueuePtr)malloc(sizeof(QueueNode)))
	{
		q->data=NULL;
		q->next=NULL;
		Q.front=q;
		Q.rear=q;
		return true;
	}
	else
		return false;
}

bool InQueue(LinkQueue &Q,ElemType e)
{
	QueuePtr q;
	if(q=(QueuePtr)malloc(sizeof(QueueNode)))
	{
		q->data=e;
		q->next=NULL;
		Q.rear->next=q;
		Q.rear=q;
    	return true;
	}
	return false;
}
bool OutQueue(LinkQueue &Q)
{
	QueuePtr q;
	q=Q.front->next;
	Q.front->next=q->next;
	free(q);
	return true;
}

bool print(LinkQueue Q)
{
	QueuePtr q;
	q=Q.front->next;
	while(q)
	{
		printf("%d\n",q->data);
		q=q->next;
	}
	printf("-------------分割线-----------------\n");
	return true;
}

3.主函数main.cpp

#include 
#include "queue.h"

int main()
{
	LinkQueue Q;
	CreateQueue(Q);//创建队列
	for(int i=1;i<=10;i++)
		InQueue(Q,i);
	print(Q);
	OutQueue(Q);
	print(Q);
	return 0;
}


你可能感兴趣的:(数据结构与算法)