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

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

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 <iostream>
#include <malloc.h>
#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 <iostream>
#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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值