c++队列问题,特急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++队列问题,特急相关的知识,希望对你有一定的参考价值。

设计一个队列类,模拟实际生活的队列,队列中的元素服从先进先出的规则。每次有新的元素入列时,就放在队列尾。元素出列时,从队列头出。开始时队列为空。队列的示意图为:

[队列类的测试数据]
输出结果:
Queue empty:Yes

4 elements enter queue
Queue empty:No

2 elements leave queue:0 1
2 elements enter queue
Elements left:2 3 4 5
[实现要求]
(1) 队列元素的空间是动态申请的。
(2) 在构造队列对象时,初始化该链表,在析构队列对象时,释放链表所占的空间。
(3) 队列类用单独的文件”queue.cpp”实现,队列类的定义放在一个头文件”queue.h”中,主文件名为main.cpp。
(4) 队列类中的元素为整数,并提供以下服务:
void put (int newVal); //在队尾加入一个新元素
int get ( ); //取出队头元素,并释放节点空间
int getCount(); //取队列中元素的个数
bool empty() ; //判断队列是否为空

bool是Visual C++定义的数据类型,它其实是一种整数类型。具有bool类型的变量只有两种值:true或false。一个条件表达式返回的值就是bool类型的。如表达式i!=0在i的值为0时返回false,在不为0时返回true。

要求将函数empty()和getCount()定义为内联函数,另外两个定义为非内联函数。数据成员全定义为私有成员或保护成员。
(5) 使用队列类的主程序为:
#include <iostream.h>
#include "queue.h"
int main()
Queue q;
int i;

//输出队列是否为空
cout << "Queue empty:";
if (q.empty())
cout << "Yes" << endl;
else
cout << "No" << endl;

//往队列中依次放入四个数
cout << endl << "4 elements enter queue" << endl;
for(i = 0; i < 4; i++)
q.put(i);

//输出队列是否为空
cout << "Queue empty:";
if (q.empty())
cout << "Yes" << endl;
else
cout << "No" << endl;

//取出两个数
cout << endl << "2 elements leave queue:";
cout << q.get() << " ";
cout << q.get() << " ";

//再放入两个数
cout << endl << "2 elements enter queue" << endl;
q.put(4);
q.put(5);

//按顺序输出剩下的队列成员
cout << "Elements left:" ;
int num = q.getCount();
for(i = 0; i < num; i++)
cout << q.get() << " ";
cout << endl;
return 0;


[实现提示]
(1) 队列中使用的链表定义为:
//定义链表节点类型
typedef struct node
int data;
struct node *next;
QueueDataNode;
//定义链表类型
typedef QueueDataNode * QueueData;
队列类的私有数据成员定义如下:
int count; //队列元素个数
QueueData dataLinkHead, dataLinkTail;//队头、队尾指针

(2) 在队列中插入一个元素的程序如下:
void Queue::put (int newData)

//建立一个新的结点
QueueDataNode *pNew = new QueueDataNode;
if (pNew == NULL) //判断是否申请到空间
cout << "Memory Insufficient!";
return;

pNew->data = newData; //为新节点填充内容
pNew->next = NULL;

//将新节点插入到链表中
if (dataLinkTail == NULL) //队列为空, 新结点成为第一个结点
dataLinkHead = dataLinkTail = pNew;
else //队列不空
dataLinkTail->next = pNew;
dataLinkTail = pNew;

count++;

参考技术A 消灭0回复。
ps:楼主太吝啬了

以上是关于c++队列问题,特急的主要内容,如果未能解决你的问题,请参考以下文章

初始化并插入优先级队列 (C++)

Visual C++ Mat 图像元素队列:如何?

c++如何将数组压入队列中

在 C++ 中使用队列构造二叉树

C++队列和优先权队列的使用---应用:带时限作业排序

怎么定义队列类模板(c++)