青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

類模板實現堆棧-VC編程

Posted on 2009-10-06 01:55 S.l.e!ep.¢% 閱讀(523) 評論(0)  編輯 收藏 引用 所屬分類: C++
類模板實現堆棧-VC編程
2008-05-29 08:16:40

采用了三種實現方法:

1、自己定義數組(Stack 堆棧數組大小不能動態增加)

2、使用STL的vector(Vector_Stack 堆棧數組可動態變化)

3、使用STL的list(List_Stack 堆棧數組可動態變化)


以下是stack.h的頭文件,所有接口函數都寫為內聯,因此沒有實現文件。
正在裝載數據……


#ifndef ___STACK_H___
#define ___STACK_H___

#include <windows.h>
#include <vector>

using namespace std;

template<class T,int size = 100>
class Stack
{
public:
Stack():top(0){}
~Stack(){};

int Push(T& data)
{
if (top >= size)
{
return top;
}
stack[top ] = data;
return top;
}
int Pop(T* pData)
{
if (top <= 0)
{
return -1;
}
*pData = stack[--top];
return 0;
}
int Size()
{
return top;
}
int Clear()
{
top = 0;
return 0;
}
int Peek(T* pData)
{
*pData = stack[top];
return 0;
}
BOOL IsEmpty()
{
return (top > 0 ? FALSE : TRUE);
}
protected:
private:
T stack[size];
int top;
};


template<class T>
class Vector_Stack
{
public:
Vector_Stack(){}
~Vector_Stack(){};

int Push(T& data)
{
vstack.push_back(data);
return vstack.size();
}
int Pop(T* pData)
{
if (vstack.empty())
{
*pData = 0;
return -1;
}
else
{
*pData = vstack.back();
vstack.pop_back();
return 0;
}
}
int Size()
{
return vstack.size();
}
int Clear()
{
vstack.clear();
return 0;
}
int Peek(T* pData)
{
*pData = vstack.back();
return 0;
}
BOOL IsEmpty()
{
return (vstack.empty() ? TRUE : FALSE);
}
protected:
private:
vector<T> vstack;
};

template<class T>
class List_Stack
{
public:
List_Stack(){}
~List_Stack(){};

int Push(T& data)
{
lstack.push_back(data);
return lstack.size();
}
int Pop(T* pData)
{
if (lstack.empty())
{
*pData = 0;
return -1;
}
else
{
*pData = lstack.back();
lstack.pop_back();
return 0;
}
}
int Size()
{
return lstack.size();
}
int Clear()
{
lstack.clear();
return 0;
}
int Peek(T* pData)
{
*pData = lstack.back();
return 0;
}
BOOL IsEmpty()
{
return (lstack.empty() ? TRUE : FALSE);
}
protected:
private:
vector<T> lstack;
};

#endif

檢驗代碼:

// 模板(棧).cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stack.h"

#include <vector>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
/************************************************************************/
/* Stack */
/************************************************************************/
cout<<"********** Stack **********"<<endl;

int i,nSize;
int data;
const int size = 3;
Stack<int,size> intStack;

cout<<"set stack size=3"<<endl;

for (i=0;i<3;i )
{
data = (i 1)*100;
intStack.Push(data);
cout<<"push "<<data<<endl;
}
cout<<"size="<<intStack.Size()<<endl;

for (i=0;i<size 1;i )
{
if (!intStack.Pop(&data))
{
cout<<"pop data:"<<data<<endl;
}
}
cout<<"size="<<intStack.Size()<<endl<<endl;

/************************************************************************/
/* Vector_Stack */
/************************************************************************/
cout<<"********** Vector_Stack **********"<<endl;

Vector_Stack<int> vIntStack;

for (i=0;i<5;i )
{
data = (i 1)*10;
vIntStack.Push(data);
cout<<"push "<<data<<endl;
}
nSize = vIntStack.Size();
cout<<"size="<<nSize<<endl;

for (i=0;i<nSize 1;i )
{
vIntStack.Pop(&data);
cout<<"pop data:"<<data<<endl;
}
nSize = vIntStack.Size();
cout<<"size="<<nSize<<endl;

cout<<"IsEmpty="<<vIntStack.IsEmpty()<<endl<<endl;

/************************************************************************/
/* List_Stack */
/************************************************************************/
cout<<"********** List_Stack **********"<<endl;

List_Stack<int> lIntStack;

for (i=0;i<5;i )
{
data = (i 1)*10;
lIntStack.Push(data);
cout<<"push "<<data<<endl;
}
nSize = lIntStack.Size();
cout<<"size="<<nSize<<endl;

for (i=0;i<nSize 1;i )
{
lIntStack.Pop(&data);
cout<<"pop data:"<<data<<endl;
}
nSize = lIntStack.Size();
cout<<"size="<<nSize<<endl;

cout<<"IsEmpty="<<lIntStack.IsEmpty()<<endl;

return 0;
}


運行結果為:

********** Stack **********
set stack size=3
push 100
push 200
push 300
size=3
pop data:300
pop data:200
pop data:100
size=0

********** Vector_Stack **********
push 10
push 20
push 30
push 40
push 50
size=5
pop data:50
pop data:40
pop data:30
pop data:20
pop data:10
pop data:0
size=0
IsEmpty=1

********** List_Stack **********
push 10
push 20
push 30
push 40
push 50
size=5
pop data:50
pop data:40
pop data:30
pop data:20
pop data:10
pop data:0
size=0
IsEmpty=1
Press any key to continue


文章轉載自『幽月's Blog』

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品高清网站| 久久综合狠狠综合久久激情| 国产精品扒开腿爽爽爽视频| 欧美精品18+| 欧美电影免费观看| 欧美日韩a区| 欧美天堂亚洲电影院在线观看| 欧美日韩国产美| 国产精品一区亚洲| 国产一区二区三区高清| 一区精品久久| 亚洲精品乱码视频| 亚洲一区二区三区在线观看视频 | 欧美刺激午夜性久久久久久久| 欧美高清视频一区二区三区在线观看| 免费国产一区二区| 欧美涩涩视频| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲国产精品一区二区www| 99精品视频免费观看视频| 香港成人在线视频| 欧美a级片网站| 亚洲午夜av| 久久综合999| 国产精品国产a| 亚洲精品一级| 欧美色欧美亚洲另类七区| 欧美精品1区2区| 欧美色大人视频| 国内揄拍国内精品少妇国语| 99ri日韩精品视频| 久久精品欧洲| 亚洲精品精选| 这里是久久伊人| 久久永久免费| 国产欧美日韩在线 | 亚洲无限乱码一二三四麻| 欧美在线一二三| 亚洲激情午夜| 欧美中文字幕在线视频| 欧美激情亚洲视频| 黄色成人av| 欧美一级淫片播放口| 亚洲欧洲一区| 久久麻豆一区二区| 国产精品视频在线观看| 日韩亚洲在线观看| 欧美国产免费| 久久福利毛片| 国产精品美女久久| 一区二区毛片| 亚洲国产天堂久久综合网| 久久精品av麻豆的观看方式| 国产精品久久久久久久午夜片| 亚洲国产成人在线视频| 久久免费视频这里只有精品| 亚洲免费在线观看视频| 欧美午夜无遮挡| 一区二区三区产品免费精品久久75| 久久综合给合| 久久精品女人天堂| 狠狠色丁香久久婷婷综合丁香| 欧美夜福利tv在线| 亚洲一区观看| 国产欧美日韩一区二区三区在线观看| 午夜精品一区二区三区在线播放| 一区二区三区不卡视频在线观看| 在线亚洲免费| 久久久久久久成人| 国产真实乱偷精品视频免| 久久精品30| 性欧美大战久久久久久久久| 国产日韩精品一区二区三区| 欧美伊人久久| 欧美在线观看网址综合| 国产一区在线播放| 麻豆国产精品777777在线| 老司机精品视频一区二区三区| 国自产拍偷拍福利精品免费一| 久久精品在线视频| 久久亚洲风情| 日韩午夜电影在线观看| 99这里有精品| 国产欧美一区二区三区在线老狼 | 欧美一级大片在线免费观看| 国产日韩欧美视频| 久久婷婷av| 欧美**人妖| 亚洲视频综合| 欧美一区二区网站| 亚洲电影欧美电影有声小说| 亚洲精品乱码久久久久久黑人| 国产精品黄色| 久久综合色影院| 欧美日本国产视频| 欧美一二三区精品| 欧美fxxxxxx另类| 亚洲免费影视| 久久乐国产精品| 亚洲天堂久久| 久久午夜电影| 欧美一区1区三区3区公司| 免费黄网站欧美| 欧美一区二区在线免费播放| 欧美a级片一区| 久久精品成人欧美大片古装| 欧美精品一区二区三区蜜桃 | 国产一区二区精品久久91| 亚洲承认在线| 国产丝袜一区二区| 亚洲精品视频啊美女在线直播| 国产欧美精品va在线观看| 亚洲第一免费播放区| 亚洲香蕉网站| 免费成人av资源网| 久久国产主播| 欧美日韩一区二区三区高清| 蜜臀久久99精品久久久画质超高清| 欧美日韩国产a| 欧美a级理论片| 国产日韩欧美不卡| 一区二区三区 在线观看视| 亚洲欧洲偷拍精品| 性xx色xx综合久久久xx| 亚洲一区区二区| 欧美国产日韩免费| 欧美高清自拍一区| 伊人久久婷婷| 久久九九精品| 久久亚洲免费| 国外成人网址| 欧美综合国产| 久久久久成人网| 国产欧美日韩在线视频| 亚洲一区二区精品在线| 亚洲无亚洲人成网站77777| 欧美国产日产韩国视频| 亚洲欧洲日本一区二区三区| 亚洲欧美日韩视频一区| 国产日韩精品一区二区| 亚洲无线一线二线三线区别av| 欧美日韩国产黄| 亚洲电影自拍| 亚洲国产精品久久久久秋霞不卡| 久久av资源网站| 久久激五月天综合精品| 国产精品综合不卡av| 亚洲欧美日韩一区二区在线| 欧美一区二视频| 国产一区导航| 久久精品人人做人人爽| 欧美jizz19性欧美| 亚洲精品国产欧美| 欧美日韩免费一区二区三区视频| 亚洲精品乱码久久久久久久久| 日韩天堂在线视频| 国产精品久久久久久久久久久久久| 国产精品99久久久久久久女警 | 亚洲日本中文| 在线视频你懂得一区| 欧美日韩午夜在线| 一区二区三区黄色| 欧美在线视频二区| 精品不卡视频| 欧美极品一区二区三区| 一区二区三区久久| 久久久免费精品| 日韩亚洲一区在线播放| 国产精品日韩在线| 久久九九热免费视频| 亚洲精品人人| 久久青草久久| 一区二区三区视频观看| 国产一二精品视频| 欧美黄色日本| 亚洲欧美日本日韩| 亚洲国产成人精品女人久久久| 亚洲视频一区二区在线观看| 国外成人免费视频| 国产精品theporn| 久久久精品动漫| 国产精品99久久不卡二区| 欧美不卡视频一区| 亚洲欧美中日韩| 亚洲精品日韩久久| 国内成人精品视频| 国产精品久久久久久影视| 久久中文欧美| 亚洲欧美在线x视频| 亚洲精品久久久久久久久| 久久久91精品| 亚洲欧美日韩国产中文在线| 亚洲国产精品成人综合| 国产精品亚洲综合天堂夜夜| 欧美精品久久久久久久久老牛影院| 午夜精品在线| 中文国产成人精品久久一| 欧美福利一区二区三区| 久久精品一区二区三区四区| 亚洲专区国产精品|