stack

1. 棧數據結構簡單介紹

2. 簡單實現代碼及stl中stack簡單使用

3. 代碼下載?

1. 棧數據結構簡單介紹

棧是這樣的一種數據結構,遵循“先進后出”的原則。在stack上定義如下的operations:

1. 判空

2. 入棧push

3. 出棧pop,在棧的不同實現版本中,有的實現pop元素返回棧頂的元素,有的實現卻僅僅是將棧頂元素彈出,通過top函數得到棧頂元素

4. 判滿??

2. 實現代碼以及stl中stack的簡單使用

下面的棧使用數組來存儲元素。代碼如下:


#include <iostream>

using namespace std;
class MyStack
{
// 數據成員
private :
const int m_nStackSize;
int m_nTop;
// 數組在構造函數中產生
int* m_pData;
public :
// 構造函數
MyStack() : m_nStackSize(10)
{
// 初始化數據
m_nTop = -1;
// 生成數組
m_pData = new int[m_nStackSize];
}
MyStack(int size) : m_nStackSize(size)
{
m_nTop = -1;
m_pData = new int[m_nStackSize];
}
// 析構函數
~MyStack()
{
// 釋放內存
delete m_pData;
}
// 判空
bool isEmpty()
{
return (m_nTop == -1);
}
// 判滿
bool isFull()
{
return ( m_nTop == (m_nStackSize - 1) );
}
// 壓棧
void push(int ele)
{
// 如果棧滿
if(isFull())
return;
// 未滿,棧頂自增,壓入元素
m_nTop++;
m_pData[m_nTop] = ele;
}
// 彈棧
int pop()
{
// 棧空
if(isEmpty())
throw exception();
// 不空,彈棧,棧頂自減
int ele = m_pData[m_nTop];
m_nTop--;
return ele;
}
};
// 測試程序
int main()
{
MyStack stack;
// 初始為空
cout << "初始化時,棧為" << (stack.isEmpty() ? "空" : "非空" ) << endl;
// 壓棧
stack.push(1);
stack.push(2);
stack.push(3);
cout << "入棧之后,棧為" << (stack.isEmpty() ? "空" : "非空" ) << endl;
cout << "第一個出棧元素是" << stack.pop() << endl;
cout << "第二個出棧元素是" << stack.pop() << endl;
cout << "第三個出棧元素是" << stack.pop() << endl;
cout << "出棧之后,棧為" << (stack.isEmpty() ? "空" : "非空" ) << endl;
return 0;
}?

c++中stl已經為我們實現了一個泛型的stack,簡單的使用示例如下:


#include <iostream>
#include <stack>
using namespace std;
int main()
{
// 聲明棧
stack<int> context;
// 入棧
context.push(1);
context.push(2);
// 出棧
int ele = context.top();
context.pop();
cout << ele;
// 判空
context.empty();
// 判滿,該棧的長度會自動增加
// 除非出現內存不夠的情況,否則
// 不會出現滿的情況
return 0;
}

?3. 代碼下載

/Files/xuqiang/Stack.rar?

轉載于:https://www.cnblogs.com/xuqiang/archive/2011/03/18/1987656.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275595.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MacOS搭建環境

基礎環境 從AppStore下載 有道云筆記微信網易云音樂Chrome瀏覽器postmanChrome插件云筆記剪報基礎命令 mac下別名vi ~/.bash_profile 添加 alias llls -alF alias lals -A alias lls -CF 保存后執行(不能有空格) source ~/.bash_profile復制代碼開發環境 PhpStorm 從官網下載Ph…

【送書-小姐姐配音】低代碼平臺的核心價值與優勢

大家好&#xff0c;我是若川。記得點上方聽小姐姐配音&#xff0c;識別下方二維碼加我微信 ruochuan12&#xff0c;明天&#xff08;8月8日&#xff09;晚8點在朋友圈發動態。點贊抽3位小伙伴包郵送《實戰低代碼》&#xff0c;細則見動態。最近組織了源碼共讀活動&#xff0c;每…

oracle靜默安裝集群,靜默安裝Oracle數據庫10g篇

靜默安裝Oracle數據庫10g篇以下是在Linux系統上靜默安裝Oracle數據庫10g的實踐過程&#xff0c;主要分為以下兩個步驟&#xff1a;Step 1&#xff0e;靜默安裝Oracle數據庫10g軟件1. 使用OUI錄制響應文件&#xff0c;記錄安裝過程執行以下命令&#xff0c;然后在OUI中根據提示執…

sketch鋼筆工具_設計工具(Sketch,Adobe XD,Figma和InVision Studio)中奇怪的一項功能

sketch鋼筆工具When you build a new product that is very similar to the existing products in the market, the designers and product managers tend to do certain features different from others. Sometimes this brings a good change, sometimes worse.當您構建與市場…

modprobe:FATAL: could not load /lib/modules/2.6.35-22-generic/modules.dep No such file or directory

給ubuntu升級到10.10 &#xff0c;開機可能出現錯誤modprobe:FATAL: could not load /lib/modules/2.6.35-22-generic/modules.dep No such file or directorymodprobe:FATAL: could not load /lib/modules/2.6.35-22-generic/modules.dep No such file or directory解決辦法&a…

Python進階:如何將字符串常量轉化為變量?

2019獨角獸企業重金招聘Python工程師標準>>> 前幾天&#xff0c;我們Python貓交流學習群 里的 M 同學提了個問題。這個問題挺有意思&#xff0c;經初次討論&#xff0c;我們認為它無解。 然而&#xff0c;我認為它很有價值&#xff0c;應該繼續思考怎么解決&#xf…

怎么在matlab中圖像中外接矩形,Matlab 最小外接矩形

Matlab 中并沒有發現最小外接矩形的代碼&#xff0c;為了方便下面提供最小外接矩形的代碼&#xff1a;注&#xff1a;這個函數是源于網上找到的代碼的改進版&#xff0c;原版不能檢測水平線或者垂直線function [rectx,recty,area,perimeter] minboundrect(x,y,metric)% minbou…

尤雨溪開發的 vue-devtools 如何安裝,為何打開文件的功能鮮有人知?

1. 前言大家好&#xff0c;我是若川。最近組織了一次源碼共讀活動。每周讀 200 行左右的源碼。很多第一次讀源碼的小伙伴都感覺很有收獲&#xff0c;感興趣可以加我微信 ruochuan12&#xff0c;拉你進群學習。第一周讀的是&#xff1a;據說 99% 的人不知道 vue-devtools 還能直…

sketch浮動布局_使用智能布局和調整大小在Sketch中創建更好的可重用符號

sketch浮動布局Sketch is a widely used tool for UI designs. It implemented the Sketch是用于UI設計的廣泛使用的工具。 它實施了 atomic design methodology and made the workflow of UI design much more efficient. You can create a Symbol in Sketch and use it ever…

用Sql添加刪除字段,判斷字段是否存在的方法

增加字段alter table docdsp add dspcode char(200)刪除字段ALTER TABLE table_NAME DROP COLUMN column_NAME修改字段類型ALTER TABLE table_name ALTER COLUMN column_name new_data_type改名sp_rename更改當前數據庫中用戶創建對象&#xff08;如表、列或用戶定義數據類型…

小姐姐筆記:我是如何學習簡單源碼拓展視野的

大家好&#xff0c;我是若川。這是我上周組織的源碼共讀紀年小姐姐的筆記&#xff0c;寫得很好。所以分享給大家。歡迎加我微信 ruochuan12&#xff0c;進源碼共讀群。其他更多人的筆記可以閱讀原文查看。川哥的源碼解讀文章&#xff1a;據說 99% 的人不知道 vue-devtools 還能…

php表決器代碼,三人表決器:VHDL源代碼

描述--三人表決器(三種不同的描述方式) vhdl-- Three-input Majority Voter-- The entity declaration is followed by three alternative architectures which achieve the same functionality in different ways.ENTITY maj ISPORT(a,b,c : IN BIT; m : OUT BIT);END maj;--D…

保持危機感和緊迫感_什么是緊迫的:您需要知道的一切

保持危機感和緊迫感Putting the finishing touches on a graphic design project calls for a keen eye. But you already know this, because perfectionism is just a part of the job! You look at every nook and cranny of a project before you can consider it complete…

劍指offer java版(一)

二維數組中的查找 問題描述 在一個二維數組中&#xff08;每個一維數組的長度相同&#xff09;&#xff0c;每一行都按照從左到右遞增的順序排序&#xff0c;每一列都按照從上到下遞增的順序排序。請完成一個函數&#xff0c;輸入這樣的一個二維數組和一個整數&#xff0c;判斷…

如何系統搭建現代 Web CI/CD

大家好&#xff0c;我是若川。今天分享一篇00后寫的CI/CD直播文字稿。之前發過他的故事&#xff1a;一位00后前端2年經驗的成長歷程。我最近組織了源碼共讀活動&#xff0c;感興趣的加我微信 ruochuan12。本次直播錄播鏈接&#xff1a;https://live.juejin.cn/4354/595741[1]開…

sqlserver oracle 數據類型對應關系,SQLSERVER和ORACLE數據類型對應關系詳解和對應表格整理...

Oracle SQLServer 比較 SQLServer 常見的 數據 庫 類型 字符 數據 類型 CHAR CHAR :都是固定長度字符資料但oracle里面最大度為2kb&#xff0c;SQLServer里面最大長度為8kb 變長字符 數據 類型 VARCHAR2 VARCHAR :racle里面最大長度為4kb&#xff0c;SQLServer里面最大長度為8k…

優化算法匯總

interior point block coordinate relaxation Boltzmann machine 求解L1范數最小化 E. Candes, M. B. Wakin, and S. P. Boyd, “Enhancing sparsity by reweighted l1 minimization,” Journalof Fourier Analysis and Applications, vol. 14, pp. 877-905, Dec. 2008.I. Daub…

對接百度地圖API

一、準備工作 百度地圖開發文檔 注冊百度賬號&#xff0c;成為開發人員&#xff0c;同時獲取AK實例代碼&#xff1a;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&quo…

ui邊框設計圖_UI設計形狀和對象基礎知識:填充和邊框

ui邊框設計圖第2部分 (Part 2) Welcome to the second part of the UI Design shapes basics. This time we’ll cover two of the most essential properties of a shape — fills and borders. This is also a part of the free chapters from Designing User Interfaces.歡迎…

如何移除項目中無用的 console.log 代碼

大家好&#xff0c;我是若川。早些天時&#xff0c;我看到一個后端公眾號發《辭退了一個前端》&#xff0c;當時還想著現在后端公眾號都開始吊打前端了嘛。其中有個理由就是線上還一堆console.log...我猜很多人都會移除項目中無用的console.log。可以復習一下。前言說起console…