1. 程式人生 > >c++ 實現順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素

c++ 實現順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素

/*
	定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素
*/
#include<iostream>
using namespace std;
//
template <class T>
class sq_Stack
{
private:
	int mm;	// 儲存容量
	int top;// 棧頂指標
	T *s;	//順序棧儲存控制元件首地址

public:
	sq_Stack(int);
	void prt_sq_Stack();
	int flag_sq_Stack();
	void ins_sq_Stack(T);
	T del_sq_Stack();
	T read_sq_Sqack();
};

//建立容量為mm的空棧
template<class T>
sq_Stack<T>::sq_Stack(int m)
{
	mm = m;
	s = new T[mm];	// 動態申請儲存空間
	top = 0;
	return;
}

// 順序輸出棧頂指標與棧中的元素
template<class T>
void sq_Stack<T>::prt_sq_Stack()
{
	int i;
	cout<<"top = "<< top << endl;
	for(int i = top; i > 0; i--)
	{
		cout << s[i - 1] << end;
	}
	return;
}

// 檢測順序表的狀態
template<class T>
void sq_Stack<T>::flag_sq_Stack()
{
	if(top == mm)return -1;
	if(top == 0) return 0;
	return(1);
}

// 入棧
template<class T>
void sq_Stack<T>::ins_sq_Stack(T x)
{
	if(top == m)
	{
		cout << "Stack overflow!" << endl;
		return;
	}
	top = top + 1;
	s[top - 1] = x;
	return;
}

// 退棧
template<class T>
T sq_Stack<T>::del_sq_Stack()
{
	T y;
	if(top == 0)	
	{
		cout << "Stack underflow!" << endl;
		return(0);
	}
	y = s[top - 1];
	top = top - 1;
	return y;
}

// 讀棧頂元素
template<class T>
T sq_Stack<T>::read_sq_Sqack()
{
	if(top == 0)
	{
		cout<<"Stack empty!" << endl;
		return 0;
	}
	return s[top - 1];
}

相關推薦

c++ 實現順序初始退元素以及順序輸出指標元素

/* 定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素 */ #include<iostream> using namespace std; // template <class T> class sq_Stack {

Java的Package.Import.Class以及C++的比較(二)--成員初始順序

接下來主要都是關於Class的內容。 類成員初始化 在C++中,這樣做是不行的: class a { public: int a = 0;//不能初始化 編譯失敗 }但是在java中,這是完全可行的。 在C++中,如果: int a; 你會發現a的值是不確

c++實現單例懶漢餓漢)

 懶漢與餓漢   單例大約有兩種實現方法:懶漢與餓漢。 懶漢:故名思義,不到萬不得已就不會去例項化類,也就是說在第一次用到類例項的時候才會去例項化,所以上邊的經典方法被歸為懶漢實現;餓漢:餓了肯定要飢不擇食。所以在單例類定義的時候就進行例項化。   特點與選擇: 由於要進行執行緒同步,所以在訪問量

C/C++程式設計教訓----函式內靜態物件初始非執行緒安全C++11之前)

不少程式設計師在編寫程式的時候,會使用函式內靜態(static)變數,既能滿足函式內這個變數可以持久的記錄某些資訊,又使其訪問範圍的控制侷限於函式內。但函式內靜態類物件初始化是非執行緒安全的。 問題背景 在我們產品中對log4cxx做了一些簡單的封裝 (採用VS2005編譯),其中會

C語言 單鏈表實現佇列初始入隊出隊元素個數隊首元素是否為空)

單鏈表實現佇列: 連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0 標頭檔案:佇列.h #pragma once #include<

資料結構:實現動態順序表的各項介面初始銷燬尾插尾刪頭插頭刪刪除排序查詢等)

實現動態順序表 SeqList.h #pragma once ////靜態順序表 //#define N 10 //typedef int SLDateType; //typedef struct SeqList //{ // int _a[N];//陣列 /

C++成員初始順序問題

今天剛把買了一個月的劍指offer這本書翻閱一下,看到一個簡單的舉例。說應聘C++崗位的不知道成員變數初始化順序!大冬天的背後竟冒出了一絲冷汗,因為我也不知道,所以就上網查了一下,將學到的知識記錄如下。 主要參考部落格: 問題來源: 由於面試題中,

採用順序儲存實現初始、出操作/驗證實驗/

#include<stdio.h>  #include<stdlib.h>  #define maxsize 100  typedef struct SqStack{      int data[maxsize];      int top;  }Sq

C#初始順序

類的初始化 就是 執行順序 靜態 初始 副本 只有一個 靜態成員 初始化 類在初始化時的執行順序,依次如下: 1: 子類靜態變量 2: 子類靜態構造函數 3: 子類非靜態變量 4: 父類靜態變量 5: 父類靜態構造函數 6: 父類非靜態變量 7: 父類構造函數

Java編程思想筆記-初始順序

rup cep main mark java boa marker 內存 類的初始化 1、如果有父類,先初始化父類,然後初始化子類 2、先初始化靜態成員變量、靜態代碼塊(static { }包圍的代碼),然後初始化非靜態成員變量、非靜態代碼塊(大括號包圍的代碼)。靜態成員變

jvm系列學習之--Java初始順序

parent main方法 println () 類成員 -- sys div 開始 本文主要演示Java類的初始化順序 初始化順序 對於靜態變量、靜態初始化塊、變量、初始化塊、構造器,它們的初始化順序依次是(靜態變量、靜態初始化塊)>(變量、初始化塊)>構造器

java初始順序

靜態 成員 代碼 初始化順序 初始化 沒有 父類靜態 都是 nbsp 屬性、方法、構造方法和自由塊都是類中的成員,在創建類的對象時,類中各成員的執行順序:1.父類靜態成員和靜態初始化快,按在代碼中出現的順序依次執行。2.子類靜態成員和靜態初始化塊,按在代碼中出現的順序依次執

Java程式設計師從笨鳥到菜鳥之九十四)深入java虛擬機器三)——的生命週期 下)初始

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

順序:創建&初始、出、計算有效數據長度、獲取數據、清空、銷毀

機制 按位取反 軟件 技巧 stdlib.h sig length stack capacity /* 順序棧的實現: 初始化 入棧 出棧 計算棧的有效數據長度 獲取棧頂數據 清空棧 銷毀棧*/#include <std

分別用列表和連結串列實現

#!/usr/bin/python3 class StackUnderflow(ValueError):     pass class ListStack():     def __init__(self):      

虛擬機器載入機制七)——載入的過程初始

類初始化時類載入過程的最後一步,前面的類載入過程中,除了在載入階段(類載入過程的一個階段)應用程式可以通過自定義類載入器參與之外,其餘動作完全由虛擬機器主導和控制。到了初始化階段,才真正開始執行類中定義的java程式程式碼。 在準備階段,變數已經賦過一次系統要求的初始值,而

C#使用匿名初始

程式碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespa

Visual C++網路程式設計經典案例詳解 第4章 FTP瀏覽器 建立客戶端 使用CFtp程式設計 初始檔案查詢

使用者在客戶端啟動時 可以使用函式進行檔案查詢 BOOL CFTPDlg::OnInitDialog() { ... //省略部分程式碼 int i=0; LVITEM item={0}; //初始化列表結構 item.mask=LVIF_TEXT;

C++成員初始問題----const、引用變數

Introduction        在C++程式碼中,變數的宣告和賦值是兩個過程。宣告是給變數分配記憶體,賦值是給記憶體賦值(即給變數賦值)。在宣告的過程中同時給變數賦值叫做初始化,但是初始化的賦值和普通的賦值在C++編譯器看來是不一樣的。 &nb

利用模板實現簡單的陣列和單鏈表)

主要的功能是實現一個後進先出的列表,有入棧、出棧、返回大小、判空等基本功能 #pragma once using namespace std; const int MAXSIZE = 0xfff;