棧的概念
成都創(chuàng)新互聯(lián)主營洪洞網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),洪洞h5微信小程序開發(fā)搭建,洪洞網(wǎng)站營銷推廣歡迎洪洞等地區(qū)企業(yè)咨詢棧是數(shù)據(jù)結(jié)構(gòu)中一種特殊的線性表,它的基本特性是“先入后出,后入先出”。如下圖:
棧的基本操作
棧有基本操作如下:
void Push(const T& d);//入棧
void Pop();//出棧
T& Top();//返回棧頂元素
bool Empty();//判斷是否為空棧
size_t Size();//棧中元素個數(shù)
棧的實(shí)現(xiàn)
Stack.hpp
#pragma once
#include<iostream>
using namespace std;
template<class T>
class Stack
{
public:
Stack();
~Stack();
Stack(const Stack<T>& s);
Stack<T>& operator=(Stack<T> s);
void Push(const T& d);
void Pop();
T& Top();
bool Empty();
size_t Size();
protected:
void _CheckCapacity();
protected:
T* _a;
size_t _top;
size_t _capacity;
};
template<class T>
void Stack<T>::_CheckCapacity()
{
if (_a == NULL)
{
_capacity = 3;
_a = new T[_capacity];
return;
}
if (_top == _capacity)
{
_capacity += 3;
T* tmp = new T[_capacity];
for (size_t i = 0; i < _top; i++)
{
tmp[i] = _a[i];
}
delete[] _a;
_a = tmp;
}
}
template<class T>
Stack<T>::Stack()
:_a(0)
, _top(0)
, _capacity(0)
{}
template<class T>
Stack<T>::~Stack()
{
if (_a)
{
delete[] _a;
}
}
template<class T>
Stack<T>::Stack(const Stack<T>& s)
:_top(s._top)
,_capacity(s._capacity)
{
_a = new T[_capacity];
for (size_t i = 0; i < _top; i++)
{
_a[i] = s._a[i];
}
}
template<class T>
Stack<T>& Stack<T>::operator=(Stack<T> s)
{
swap(s._a,_a);
_top = s._top;
_capacity = s._capacity;
return *this;
}
//template<class T>
//Stack<T>& Stack<T>::operator=(const Stack<T>& s)
//{
// if (this != &s)
// {
// delete[] _a;
// _capacity = s._capacity;
// _top = s._top;
// _a= new T[_capacity];
// for (size_t i = 0; i < _top; i++)
// {
// _a[i] = s._a[i];
// }
// }
// return *this;
//}
template<class T>
void Stack<T>::Push(const T& d)
{
_CheckCapacity();
_a[_top++] = d;
}
template<class T>
void Stack<T>::Pop()
{
if (_top)
{
--_top;
}
}
template<class T>
T& Stack<T>::Top()
{
return _a[_top - 1];
}
template<class T>
bool Stack<T>::Empty()
{
if (_top == 0)
return true;
else
return false;
}
template<class T>
size_t Stack<T>::Size()
{
return _top;
}
//test.cpp
#include "Stack.h"
#include<string>
int main()
{
Stack<string> s;
s.Push("1111111111111");
s.Push("2222222222222");
s.Push("3333333333333");
s.Push("4444444444444");
s.Push("5555555555555");
Stack<string> s1(s);
Stack<string> s2;
s2 = s;
while (!s2.Empty())
{
cout << s2.Top() << " ";
s2.Pop();
}
getchar();
return 0;
}
運(yùn)行結(jié)果:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前題目:c++實(shí)現(xiàn)棧-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://muchs.cn/article2/cdohic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站營銷、品牌網(wǎng)站制作、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容