//因作者刚接触c++因此写的代码较为简单,见谅。若有错误之处,希望各位大牛能指点一二。
//Geeksun 2018.03.18
//main.cpp
#include <iostream>
#include "queue.h"
using namespace std;
void menu();
int main()
{
int choice,value = 0;
queue myqueue;
menu();
while(1)
{
cout << "请输入:";
cin >> choice;
if(choice == 1)
{
int num;
cout << "请输入即将入队的数字:";
cin >> num;
myqueue.push(num);
}
else if(choice == 2)
{
if (myqueue.pop(&value))
{
}
else
{
cout << "队列为空" << endl;
}
}
else if(choice == 3)
{
if(myqueue.top(&value))
{
cout << "队首为:" << value << endl;
}
else
{
cout << "队列为空" << endl;
}
}
else if(choice == 4)
{
if(myqueue.empty())
{
cout << "队列不为空" << endl;
}
else
{
cout << "队列为空" << endl;
}
}
else if(choice == 5)
{
myqueue.output();
}
else if(choice == 6)
{
cout << myqueue.size() << endl;
}
else if(choice == 7)
{
cout << "正在销毁队列..." << endl;
}
else
{
cout << "输入错误,请重新处输入!" << endl;
}
}
return 0;
}
void menu()
{
cout << "如果你想使一个元素入队,请输入数字1并按回车键。" << endl;
cout << "如果你想使一个元素出队,请输入数字2并按回车键。" << endl;
cout << "如果你想查询队首的元素,请输入数字3并按回车键。" << endl;
cout << "如果你想查询队列是否为空,请输入数字4并按回车键。" << endl;
cout << "如果你想打印队列,请输入数字5并按回车键" << endl;
cout << "如果你想知道队列的元素个数,请输入数字6并按回车键" << endl;
cout << "如果你想销毁队列,请输入数字7并按回车键" << endl;
}
****************************************************************************************************************************
//queue.h
#ifndef LINKEDQUEUE_H
#define LINKEDQUEUE_H
class queue
{
public:
queue(void);//头指针
queue(int value);//新建结点
~queue(void);
private:
int m_value;
queue* m_pnext;
public:
void push(int value);
bool pop(int *value);
bool top(int *value);
bool empty();
int size();
void output();
void destroy();
};
#endif
****************************************************************************************************************************
//queue.h
#include <iostream>
#include "queue.h"
using namespace std;
queue::queue(void)//头指针
{
m_pnext = NULL;
m_value = 0;
}
queue::queue(int value)//新建结点
{
m_value = value;
m_pnext = NULL;
}
queue::~queue(void)
{
cout << "当前析构的数为:" << m_value << endl;
}
void queue::push(int value)
{
queue* pnode = this;
while(pnode->m_pnext != NULL)
{
pnode = pnode->m_pnext;
}
queue* newnode = new queue(value);
pnode->m_pnext = newnode;
m_value++;
}
bool queue::pop(int *value)
{
bool result = false;
if(m_pnext != NULL)
{
queue* p = m_pnext;
*value = m_pnext->m_value;
m_pnext = m_pnext->m_pnext;
delete p;
result = true;
m_value--;
}
return result;
}
bool queue::top(int *value)
{
bool result = false;
if(m_pnext != NULL)
{
*value = m_pnext->m_value;
result = true;
}
return result;
}
bool queue::empty()
{
bool result = false;
if(m_pnext != NULL)
{
result = true;
}
return result;
}
int queue::size()
{
return m_value;
}
void queue::output()
{
queue* p = m_pnext;
while(p != NULL)
{
cout << p->m_value << " ";
p = p->m_pnext;
}
cout << endl;
}
void queue::destroy()
{
while(m_pnext != NULL)
{
queue* p = m_pnext;
m_pnext = m_pnext->m_pnext;
delete p;
}
}