国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++如何實現隊列程序

2020-02-24 14:30:03
字體:
來源:轉載
供稿:網友

用C++實現隊列的程序的知識相信很多朋友們都是非常陌生的,那么接下來我們就去看看C++如何實現隊列程序的內容,希望本文內容對你有所幫助。

?

// MyQueue.cpp : 定義控制臺應用程序的入口點。
//實現鏈式隊列(queue),包括一個頭結點。隊列操作包括在隊頭出隊(pop)、在隊尾入隊(push)、
//取得隊頭元素(front_element)、取得隊尾元素(back_element)、隊列元素個數(size)、
//隊列是否為空(empty)。
#include "stdafx.h"
#include <iostream>
using namespace std;
//定義隊列的節點結構
template <class T>
struct NODE
{
?NODE<T>* next;
?T data;
};
template <class T>
class MyQueue
{
public:
?MyQueue()
?{
??NODE<T>* p = new NODE<T>;
??if (NULL == p)
??{
???cout << "Failed to malloc the node." << endl;
??}
??p->data = NULL;
??p->next = NULL;
??front = p;
??rear = p;
?}
//在隊尾入隊
?void push(T e)
?{
??NODE<T>* p = new NODE<T>;
??if (NULL == p)
??{
???cout << "Failed to malloc the node." << endl;
??}
??p->data = e;
??p->next = NULL;
??rear->next = p;
??rear = p;
?}
//在隊頭出隊
?T pop()
?{
??T e;
??if (front == rear)
??{
???cout << "The queue is empty." << endl;
???return NULL;
??}
??else
??{
???NODE<T>* p = front->next;
???front->next = p->next;
???e = p->data;
???//注意判斷當只有一個元素,且刪除它之后,rear指向的node被刪除
???//應將其指向頭結點
???if (rear == p)
???{
????rear = front;
???}
???delete p; p = NULL;
???return e;
??}
?}
?//取得隊頭元素
?T front_element()
?{
??if (front == rear)
??{
???cout << "The queue is empty." << endl;
???return NULL;
??}
??else
??{
???NODE<T>* p = front->next;
???return p->data;
??}
?}
?T back_element()
?{
??if (front == rear)
??{
???cout << "The queue is empty." << endl;
???return NULL;
??}
??else
??{
???return rear->data;
??}
?}

?//取得隊列元素個數
?int size()
?{
??int count(0);
??NODE<T>* p = front;
??while (p != rear)
??{
???p = p->next;
???count++;
??}
??return count;
?}

?//判斷隊列是否為空
?bool empty()
?{
??if (front == rear)
??{
???return true;
??}
??else
??{
???return false;
??}
?}
private:
?NODE<T>* front; //指向頭結點的指針。 front->next->data是隊頭第一個元素。
?NODE<T>* rear;//指向隊尾(最后添加的一個元素)的指針
};
int _tmain(int argc, _TCHAR* argv[])
{
?MyQueue<int> myqueue;
?cout << myqueue.size() << endl;
?myqueue.push(10);
?myqueue.push(20);
?myqueue.push(30);
?cout << myqueue.front_element() << endl;
?cout << myqueue.back_element() << endl;
?myqueue.pop();
?if (myqueue.empty())
?{
??cout << "The queue is empty now." << endl;
?}
?else
?{
??cout << "The queue has " << myqueue.size() << " elements now." << endl;
?}
?myqueue.pop();
?myqueue.pop();
?if (myqueue.empty())
?{
??cout << "The queue is empty now." << endl;
?}
?else
?{
??cout << "The queue has " << myqueue.size() << " elements now." << endl;
?}
?return 0;
}

以上就是關于C++如何實現隊列程序的內容,C++實現隊列代碼是小編根據自己的日常總結分享的,如有不足之處,還望指正。?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日土县| 西贡区| 屯昌县| 和静县| 佛冈县| 霍州市| 长丰县| 缙云县| 张家口市| 从化市| 贞丰县| 徐州市| 昌宁县| 永和县| 辽宁省| 淮阳县| 宣威市| 庄浪县| 北京市| 铁岭市| 烟台市| 宜良县| 茌平县| 大竹县| 杂多县| 新巴尔虎右旗| 绵阳市| 改则县| 华蓥市| 丹阳市| 法库县| 丰顺县| 陵川县| 丰顺县| 城步| 龙州县| 岳西县| 慈溪市| 锦屏县| 建水县| 武城县|