Queue-C++
来源:互联网 发布:批八字算命软件 编辑:程序博客网 时间:2024/06/14 07:50
/用链表实现一个简单队列
//队列特点:一种队首不断删除而队尾不断添加的数据结构
//今天选用链表而不选用数组,因为数组不太灵活,chinanetboy VC++6.0 调试并编译通过,主调用程序有完整的调用队列的功能实现
//------------------------------------------------------------------------
#include <iostream>
using namespace std;
//定义一个队列结构QList
struct QList
{
int nVar;
QList *nextPtr;
};
//定义一个顺序队列类Queue
class Queue
{
public:
Queue(); //构造函数
~Queue(); //析构函数
int QLength()const; //队列长度
void Qprint()const; //打印队列元素
void Enqueue(int value); //队未添加元素
void Dequeue(); //队首删除元素
private:
QList *headPtr; //队头
QList *tailPtr; //队尾
int QLen; //队长度
};
//类函数的实现
//构造函数:初始化变量
Queue::Queue()
{
headPtr = tailPtr = NULL;
QLen = 0;
}
//析构函数:用一个指针指向对队,删除队列中所有元素
Queue::~Queue()
{
QList *tempPtr;
while (headPtr != NULL)
{
tempPtr = headPtr;
headPtr = headPtr->nextPtr;
delete tempPtr;
}
}
//队未添加元素:
//在内存分配一个链表结点,输入的数据加进去,队尾指向新结点,队列长度+1
void Queue::Enqueue(int value)
{
QList *tempPtr; //建立一个结点指针变量tempPtr
tempPtr = new QList; //分配内存给tempPtr
tempPtr->nVar = value; //tempPtr结点的数据项nVar存入数据value
tempPtr->nextPtr = NULL; //tempPtr结点的链接项nextPtr指针设置为空
if (headPtr == NULL) //判断队首是否为空?
headPtr = tempPtr; //队首空,把队首指针指向新建立的结点tempPtr
else
tailPtr->nextPtr = tempPtr;
//队列有数据,把队尾链接项指针指向新建立的结点tempPtr
tailPtr = tempPtr; //新建立的结点tempPtr的数据项更新队尾
QLen++; //队列长度+1
}
//队首删除元素:
void Queue::Dequeue()
{
QList *tempPtr;
if (headPtr == NULL) {
cout << "Queue already empty." << endl;
return;
}
tempPtr = headPtr;
headPtr = headPtr->nextPtr;
delete tempPtr;
QLen--;
}
//输出队列中所有元素
void Queue::Qprint()const
{
QList *tempPtr;
if (headPtr == NULL)
{
cout << "Queue is empty." << endl;
return;
}
tempPtr = headPtr;
while (tempPtr != NULL)
{
cout << tempPtr->nVar << "->";
tempPtr = tempPtr->nextPtr;
}
cout << "NULL" << endl;
}
//计算队列个数
int Queue::QLength()const
{ return (QLen);}
//使用此类进行测试和演示
int main()
{
Queue ATM;
int choice;
while (1) {
cout<<"----------------------------------------/n";
cout<<"***队列数据结构测试***/n";
cout<<"1 尾部添加队列/n";
cout<<"2 头部删除队列/n";
cout<<"3 显示队列长度/n";
cout<<"4 打印队列清单: /n";
cout<<"0 退出试验/n";
cout<<"***选择(0,1,2,3,4):/n";
cout<<"----------------------------------------/n";
cin >> choice;
if (!choice)
break;
switch (choice) {
case 1:
cout << "Enter an integer into queue: /n";
int value;
cin >> value;
ATM.Enqueue(value);
break;
case 2:
ATM.Dequeue();
break;
case 3:
int length ;
length= ATM.QLength();
cout << "length = " << length << endl;
break;
case 4:
ATM.Qprint();
break;
default:
cout << "Norecognize item." << endl;
break;
}
}
return 0;
}
//队列特点:一种队首不断删除而队尾不断添加的数据结构
//今天选用链表而不选用数组,因为数组不太灵活,chinanetboy VC++6.0 调试并编译通过,主调用程序有完整的调用队列的功能实现
//------------------------------------------------------------------------
#include <iostream>
using namespace std;
//定义一个队列结构QList
struct QList
{
int nVar;
QList *nextPtr;
};
//定义一个顺序队列类Queue
class Queue
{
public:
Queue(); //构造函数
~Queue(); //析构函数
int QLength()const; //队列长度
void Qprint()const; //打印队列元素
void Enqueue(int value); //队未添加元素
void Dequeue(); //队首删除元素
private:
QList *headPtr; //队头
QList *tailPtr; //队尾
int QLen; //队长度
};
//类函数的实现
//构造函数:初始化变量
Queue::Queue()
{
headPtr = tailPtr = NULL;
QLen = 0;
}
//析构函数:用一个指针指向对队,删除队列中所有元素
Queue::~Queue()
{
QList *tempPtr;
while (headPtr != NULL)
{
tempPtr = headPtr;
headPtr = headPtr->nextPtr;
delete tempPtr;
}
}
//队未添加元素:
//在内存分配一个链表结点,输入的数据加进去,队尾指向新结点,队列长度+1
void Queue::Enqueue(int value)
{
QList *tempPtr; //建立一个结点指针变量tempPtr
tempPtr = new QList; //分配内存给tempPtr
tempPtr->nVar = value; //tempPtr结点的数据项nVar存入数据value
tempPtr->nextPtr = NULL; //tempPtr结点的链接项nextPtr指针设置为空
if (headPtr == NULL) //判断队首是否为空?
headPtr = tempPtr; //队首空,把队首指针指向新建立的结点tempPtr
else
tailPtr->nextPtr = tempPtr;
//队列有数据,把队尾链接项指针指向新建立的结点tempPtr
tailPtr = tempPtr; //新建立的结点tempPtr的数据项更新队尾
QLen++; //队列长度+1
}
//队首删除元素:
void Queue::Dequeue()
{
QList *tempPtr;
if (headPtr == NULL) {
cout << "Queue already empty." << endl;
return;
}
tempPtr = headPtr;
headPtr = headPtr->nextPtr;
delete tempPtr;
QLen--;
}
//输出队列中所有元素
void Queue::Qprint()const
{
QList *tempPtr;
if (headPtr == NULL)
{
cout << "Queue is empty." << endl;
return;
}
tempPtr = headPtr;
while (tempPtr != NULL)
{
cout << tempPtr->nVar << "->";
tempPtr = tempPtr->nextPtr;
}
cout << "NULL" << endl;
}
//计算队列个数
int Queue::QLength()const
{ return (QLen);}
//使用此类进行测试和演示
int main()
{
Queue ATM;
int choice;
while (1) {
cout<<"----------------------------------------/n";
cout<<"***队列数据结构测试***/n";
cout<<"1 尾部添加队列/n";
cout<<"2 头部删除队列/n";
cout<<"3 显示队列长度/n";
cout<<"4 打印队列清单: /n";
cout<<"0 退出试验/n";
cout<<"***选择(0,1,2,3,4):/n";
cout<<"----------------------------------------/n";
cin >> choice;
if (!choice)
break;
switch (choice) {
case 1:
cout << "Enter an integer into queue: /n";
int value;
cin >> value;
ATM.Enqueue(value);
break;
case 2:
ATM.Dequeue();
break;
case 3:
int length ;
length= ATM.QLength();
cout << "length = " << length << endl;
break;
case 4:
ATM.Qprint();
break;
default:
cout << "Norecognize item." << endl;
break;
}
}
return 0;
}
- queue.c
- queue.c
- c-queue?
- C/C++-----------00queue-------
- Queue-C++template1
- Queue-C++template
- Queue-c数组
- queue-c链式队列
- #include<queue> 【c++】
- c++queue容器介绍
- freeBSD queue.c--定时器
- [C++] Stack / queue / priority_queue
- QUEUE C语言实现
- #include<queue> 【c++】
- c++stack,queue
- c++queue容器介绍
- C++_队列(Queue)
- [c]队列queue
- 用C#编写ActiveX控件
- List-C++ template
- C#中的索引器——双重索引器
- 研发人员如何看待项目开发管理
- WSS页面定制系列(2)---定制单个列表的表单页面
- Queue-C++
- 自定义Gridview的表头
- Queue-C++template1
- 删除表空间的操作
- SharePoint如何模拟用户
- SQL常用语句和函数(转)
- 软件测试
- 读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
- mkswap的挽救方法