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

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > 算法與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)5:C++棧的簡(jiǎn)單實(shí)現(xiàn)

算法與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)5:C++棧的簡(jiǎn)單實(shí)現(xiàn)

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-12-25 08:32:49 閱讀次數(shù):2758次

堆棧是基于隊(duì)列的,只需要要略微改1下就ok了,把代碼貼在下面


// Stack.h

#include <cstdio> #include <cassert> #include <iostream> using namespace std; class Stack { public: // ************************************************************************** // 類的4大函數(shù):構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、重載賦值運(yùn)算符、析構(gòu)函數(shù) // ************************************************************************** Stack(); Stack(const Stack &Stack); Stack& operator=(const Stack &Stack); ~Stack(); // ************************************************************************** // 增刪改查 // ************************************************************************** void Push(const int& data); int Pop(); unsigned short Size(); bool IsEmpty(); void PrintStack(); 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 Stack::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大函數(shù):構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、重載賦值運(yùn)算符、析構(gòu)函數(shù) // ************************************************************************** Stack::Stack() { m_head = NULL; m_tail = NULL; m_size = 0; } Stack::Stack(const Stack &Stack) { m_head = NULL; m_tail = NULL; m_size = Stack.m_size; if(Stack.m_head){ Node* tmp = Stack.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; } } Stack& Stack::operator=(const Stack &Stack) { Free(); m_size = Stack.m_size; if(Stack.m_head){ Node* tmp = Stack.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; } Stack::~Stack() { 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 Stack::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 Stack::Pop() { assert(m_size > 0); Node* tmp = m_head; m_head = m_head->next; int val = tmp->data; delete tmp; --m_size; return val; } unsigned short Stack::Size() { return m_size; } bool Stack::IsEmpty() { return (m_size == 0); } void Stack::PrintStack() { 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 Stack #include "Stack.h" #include <cstdlib> #include <iostream> #include <list> using namespace std; int main() { Stack stack; for (int i = 1; i < 5; ++i){ stack.Push(i); } stack.PrintStack(); Stack stackCopy(stack); stackCopy.PrintStack(); Stack stackAssig; stackAssig = stack; stackAssig.PrintStack(); int pop = stack.Pop(); cout << "pop:" << pop << endl; stack.PrintStack(); system("pause"); return 0; }

// 輸出截圖



生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 咸片在线网站免费观看 | 爽爽影院色黄网站在线观看 | 小说区 综合区 都市激情 | 天堂在线v | jizz在亚洲 | 18videosex性欧美69 | 久久一区二区免费播放 | 欧美又大粗又爽又黄大片视频 | 亚洲精品久久久久久下一站 | 久久久久国产精品 | 久久精品国产精品亚洲精品 | 免费一级毛片在级播放 | 欧美性猛交xxxx | 欧美在线网站 | 久久精品一区二区三区四区 | 性猛交xxxxx按摩 | 伊人久久大香线蕉久久婷婷 | 欧美一级毛片免费看 | 日本zzzzwww大片免费 | 国产欧美一区二区三区在线看 | 咸片在线网站免费观看 | 欧美综合在线播放 | 伊人色影院 | 国产成人小视频在线观看 | 国产美女无遮挡免费视频 | 欧美精品第一页 | 欧美激情性xxxxx | 亚洲爽爽 | 中文字幕在线观看 | 青青自拍视频一区二区三区 | 99热色| 亚洲一区精品伊人久久伊人 | 偷柏自拍亚洲欧美综合在线图 | 久久精品全国免费观看国产 | 国产成人a毛片 | 欧美最猛性xxxxx喷水 | 国产欧美一区二区三区在线看 | 亚洲欧美日韩中文字幕在线 | 欧美一级精品 | 国产午夜毛片 | 欧美精品专区第1页 |