多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 算法與數據結構基礎6:C++隊列的簡單實現

算法與數據結構基礎6:C++隊列的簡單實現

來源:程序員人生   發布時間:2014-12-13 08:36:03 閱讀次數:2498次

隊列也是基于隊列,弄懂了隊列,隊列就很好懂了


// Queue.h

#include <cstdio> #include <cassert> #include <iostream> using namespace std; class Queue { public: // ************************************************************************** // 類的4大函數:構造函數、拷貝構造函數、重載賦值運算符、析構函數 // ************************************************************************** Queue(); Queue(const Queue &Queue); Queue& operator=(const Queue &Queue); ~Queue(); // ************************************************************************** // 增刪改查 // ************************************************************************** int Pop(); void Push(const int& data); unsigned short Size(); bool IsEmpty(); void PrintQueue(); private: void Free(); private: typedef struct Node{ Node(int d):data(d),next(NULL){} int data; struct Node* next; }Node; Node* m_head; Node* m_tail;/* 這個變量加得有點雞肋,最初是想用來操作鏈表尾,發現只有插入的時候能用,刪除的時候用不了,由于沒有前指針 */ unsigned short m_size; }; // ************************************************************************** // 私有方法 // ************************************************************************** void Queue::Free() { if(m_head){ Node* tmp = NULL; while(m_head){ tmp = m_head; m_head = m_head->next; delete tmp; } } m_head = NULL; m_tail = NULL; m_size = 0; } // ************************************************************************** // 類的4大函數:構造函數、拷貝構造函數、重載賦值運算符、析構函數 // ************************************************************************** Queue::Queue() { m_head = NULL; m_tail = NULL; m_size = 0; } Queue::Queue(const Queue &Queue) { m_head = NULL; m_tail = NULL; m_size = Queue.m_size; if(Queue.m_head){ Node* tmp = Queue.m_head; Node* q = NULL; while(tmp){ Node* node = new Node(tmp->data); if(!m_head){ m_head = node; q = m_head; } else{ q->next = node; q = node; } tmp = tmp->next; } m_tail = q; } else{ m_head = NULL; m_tail = NULL; } } Queue& Queue::operator=(const Queue &Queue) { Free(); m_size = Queue.m_size; if(Queue.m_head){ Node* tmp = Queue.m_head; Node* q = NULL; while(tmp){ Node* node = new Node(tmp->data); if(!m_head){ m_head = node; q = m_head; } else{ q->next = node; q = node; } tmp = tmp->next; } m_tail = q; } else{ m_head = NULL; m_tail = NULL; } return *this; } Queue::~Queue() { if (m_head){ Node* tmp = m_head; while (tmp){ m_head = m_head->next; delete tmp; tmp = m_head; } } m_head = NULL; m_tail = NULL; } // ************************************************************************** // 增刪改查 // ************************************************************************** void Queue::Push(const int& data) { Node* tmp = new Node(data); if (!m_head) { m_head = tmp; m_tail = tmp; } else{ tmp->next = m_head; m_head = tmp; } ++m_size; } int Queue::Pop() { assert(m_size > 0); int val = 0; Node *cur, *pri; if (!m_head->next){ val = m_head->data; delete m_head; m_head = NULL; m_tail = NULL; m_size = 0; } else{ cur = m_head; while (cur->next->next){ cur = cur->next; } pri = cur; m_tail = cur; cur = cur->next; pri->next = NULL; val = cur->data; delete cur; cur = NULL; --m_size; } return val; } unsigned short Queue::Size() { return m_size; } bool Queue::IsEmpty() { return (m_size == 0); } void Queue::PrintQueue() { cout << "size : " << m_size << " , content : "; if (m_head){ Node* tmp = m_head; while (tmp){ cout << tmp->data << " -> "; tmp = tmp->next; } } cout << "NULL" << endl; }

// main.cpp

// test for Queue #include "Queue.h" #include <cstdlib> #include <iostream> using namespace std; int main() { Queue queue; for (int i = 1; i < 5; ++i){ queue.Push(i); } queue.PrintQueue(); Queue queueCopy(queue); queueCopy.PrintQueue(); Queue queueAssig; queueAssig = queue; queueAssig.PrintQueue(); int pop = queue.Pop(); cout << "pop:" << pop << endl; queue.PrintQueue(); system("pause"); return 0; }

// 輸出截圖


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 青春草久久 | 国产视频日本 | 日产高清卡一卡二无卡三区 | 亚洲一片 | 最新国产精品精品视频 | 色自拍偷拍| 国产福利一区二区三区视频在线 | 伊人性视频 | 最近最新的中文字幕大全3 最近最新高清免费中文字幕 | 欧美一区二区二区 | 亚洲国产成人久久精品影视 | 91一区二区三区四区五区 | 免费一级欧美大片久久网 | 午夜私人影院在线观看 | 国产一级淫片视频免费看 | 91精品国产欧美一区二区 | 成人777777| 亚洲日韩中文字幕一区 | 12306ys午夜播播在线影院 | 99久久精品免费国产一区二区三区 | 国产精品视频第一区二区三区 | 亚洲精品高清久久 | 亚洲高清一区二区三区四区 | 亚洲国产精品高清在线一区 | 97在线视频99播放 | 成人在线小视频 | 久操视频网站 | 午夜网站免费版在线观看 | 校园春色 中文字幕 | 尤物在线视频 | 国产一区二区播放 | 欧美一级特黄做 | 伊人性 | 国产福利网站 | 国产高清精品一级毛片 | 欧美日本一区二区三区生 | 国产不卡福利 | 亚洲精品性夜夜夜 | 日本中文字幕免费 | 亚洲天堂视频在线 | 久久乐精品|