順序棧的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)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除