1. 程式人生 > >順序棧的c++實現

順序棧的c++實現

棧的定義以及對棧的操作在mystack.h中實現

#ifndef MYSTACK_H
#define MYSTACK_H
template<class T>
class Mystack
{
public:
    Mystack(int stackcapacity);
    ~Mystack();
    bool Isempty();
    void Top();
    void Push(T item);
    void Pop();
private:
    T *stack;
    int top;
    int capacity;

};
//利用建構函式初始化棧的容量
template <class T> Mystack<T>::Mystack(int stackcapacity) { capacity= stackcapacity; stack=new T[capacity]; top=-1; } //利用解構函式清除棧 template <class T> Mystack<T>::~Mystack() { delete []stack; } //元素進棧 template <class T> void Mystack<T>::Push(T item) { if
(top==capacity-1) { Changsize(stack,capacity,2*capacity); capacity=2*capacity; } stack[++top]=item; } //訪問棧頂元素 template <class T> inline void Mystack<T>::Top() { if(!Isempty()) { cout<<"棧頂元素為:"<< stack[top]<<endl; } else { cout<<"此時棧為空"
<<endl; } } //改變棧的容量 template <class T> void Changsize(T *a,int oldsize,int newsize) { if(newsize<0) throw "new length must be >=0"; T *temp=new T[newsize]; int number=min(oldsize,newsize); std::copy(a,a+number,temp); delete []a; a=temp; } //棧頂元素出棧 template <class T> void Mystack<T>::Pop() { if(!Isempty()) top=top-1; } template <class T> bool Mystack<T>::Isempty() { return top==-1; } #endif

主函式如下:


// main.cpp程式碼

#include "mystack.h"
#include <iostream>
using namespace std;

int main()
{
  Mystack<int> ST(20);
  ST.Push(11);
  ST.Push(12);
  ST.Push(13);
  ST.Top();

  ST.Pop();
  ST.Pop();
  ST.Top();

  ST.Pop();
  ST.Top();

  system("pause");
}

執行結果

這裡寫圖片描述

相關推薦

c語言:順序實現

#include<iostream> #include<stdio.h> #include<math.h> #define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10 using name

【資料結構】順序實現C語言)

棧的基本概念及其描述 棧是一種特殊的線性表,規定它的插入運算和刪除運算均線上性表的同一端進行,進行插入操作和刪除操作的那一端稱為棧頂,另一端稱為棧底。 棧的插入操作和刪除操作分別稱為進棧和出棧。 FILO(First In Last Out)後進先出/先進後出 eg

靜態陣列的順序C語言實現

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAX_STACK_SIZE 100 //棧的大小#define ERROR -1#define OK 1typ

順序實現 C語言版(一)

/* 順序棧的實現以及相關操作 C語言版 作者:S_hmily 日期:2011年8月31日 編譯環境:VC++6.0 棧空 top == bottom bottom始終等於0 棧滿 top == MaxSize 為了操作的方便,設定下標從1開始,下標為

一個簡單C順序實現

僅用於記錄,加深理解的練習。 水平有限,不規範之處還請包涵指正。 只實現了初始化棧,進棧,出棧,列印資料功能。 #include<stdio.h> #include<stdlib.h> #define ADDSIZE 10 #

C++ 順序實現

//還不是很完善,應該在壓棧時若棧滿了自動擴大棧#include<iostream> using namespace std; #define MAXSIZE 100 typedef int ELETYPE; class Stack { private:

資料結構中順序c語言程式碼實現

一.sqstack.h標頭檔案的程式碼 #ifndef __SQSTACK_H__ #define __SQSTACK_H__ #include<stdio.h> #include<stdlib.h> typedef int datatype; ty

數據結構--順序實現

數制轉換 struct while 轉換 ktr -- eas 進制數 spa 最近在看嚴蔚敏的數據結構,以下是參照 http://blog.csdn.net/WLxinliang/article/details/52894338 手寫的順序棧的實現代碼: 1.頭文件定義

數據結構之動態順序表(C實現)

int 隊列 destroy element 類型 for str ttr def 線性表有2種,分為順序表和鏈表。 順序表: 采用順序存儲方式,在一組地址連續的存儲空間上存儲數據元素的線性表(長度固定) 鏈表: 有3種,單鏈表、雙向鏈表、循環鏈表(長度不固定)

數據結構之順序(C++版)

length init space 存在 type 容量 長度 define 入棧 #include <iostream>#include <stdlib.h>#define MAXLISTSIZE 100 //預設的存儲空間最大容量using n

鏈式C++實現

<span style="font-size:18px;">#include <iostream> #include<stdio.h> #include<m

資料結構|順序實現(實驗3.1)

一、實驗目的 1、熟練掌棧的結構特點,掌握棧的順序儲存結構和實現。 2、學會使用棧解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模,建立一個順序棧,實現棧的壓棧和出棧操作。 三、實驗步驟 1、依據實驗內容分別說明實驗程式中用到的資料型別的定義; t

約瑟夫環問題(順序表)——C++實現

#include<iostream> #include<malloc.h> #define MAXSIZE 100//人數上限 using namespace std; ty

順序ADT實現進位制轉換

/* * Created by Microsoft Visual Studio 2013 * @author: Teresa * @date: 2017-10-06 * @description: 順序棧操作 */ #include <stdio.h&g

資料結構(1)——順序實現,以及括號匹配的應用

為什麼從堆疊開始?因為我覺得線性部分比較簡單的是堆疊和佇列,用得也比較多,有不少人覺得連結串列才簡單啊,其實連結串列簡單嗎?連結串列可以派生的東西反而很多,不是一時半會可以理解的,還記得在一篇微軟的招聘心得回顧文上看到,微軟的面試官就問他怎樣用兩個連結串列實現一個棧。當然,

建立一個順序實現的壓和出操作。

標頭檔案:  #ifndef seqstack_H  #define seqstack_H  const int stacksize=10;  class seqstack  {      public:          seqstack();          ~se

資料結構基礎5_順序實現

typedef int ElemType; #define true 1 #define false 0 typedef int Status; #include<stdlib.h> #include<stdio.h> #define stackin

(C++實現)

與佇列不同,棧是一個 LIFO 資料結構。通常,插入操作在棧中被稱作入棧 push 。與佇列類似,總是在堆疊的末尾新增一個新元素。但是,刪除操作,退棧 pop ,將始終刪除佇列中相對於它的最後一個元素。 #include <iostream>

刁肥宅詳解中綴表示式求值問題:C++實現順序/鏈解決

       1. 表示式的種類        如何將表示式翻譯成能夠正確求值的指令序列,是語言處理程式要解決的基本問題,作為棧的應用事例,下面介紹表示式的求值過程。 任何一個表示式都是由

順序c語言實現和OOP實現

目錄 C語言實現順序棧和OOP實現順序棧 1,順序棧 2,C語言實現順序棧 3,用OOP實現一個順序棧 C語言實現順序棧和OOP實現順序棧 1,順序棧 (1)定義:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除