数据结构 栈

讲解链接https://blog.51cto.com/9291927/2063393

https://blog.csdn.net/hguisu/article/details/7674195

 

 

 1.栈的概念

store a set of  elements in a particular order

LAST IN FIRST OUT

 

 

2.栈的基本操作

create : create a stack leaving it empty

empty(): test whether a stack is empty

push():push a new entry onto the top of the stack provided the stack is not full

pop():pop an entry off the top of the stack provided the stack is not empty

top():retrieve the top entry from the stack provided the stack is not empty

3.基于数组的栈的实现

数组尾为栈顶,数组头为栈底

MyStack.h

 MyStack.cpp

MyStack():

  empty():

  Push():

 Top():

 Pop():

 

 

 利用栈对数组逆序

 

 

 实现一个满足任意数据类型的栈

方法1 typedef

 

 方法2 :templates 模板

C++支持 function template

               class template

C++中定义函数模板

template <class类型形参名1,...,class类型形参名n>

返回类型函数模板名(形参表){

函数体

}

e.g. template<class T>

T Abs(T n){

return n<0?-n:n

}

实例

#include<iostream>
using namespace std;
template <class type>
type Abs(type n){
return n<0?-n:n;
}int main(){
cout << "Absolute value of -5 is "<< Abs<int>(-5); //<int>称为模板函数的实例化
cout << endl;
cout << "Absolute value of -5.6 is " << Abs<int>(-5.6);
cout << endl;
}
在类外定义模板类的成员函数
template<形参1的说明,...,形参n的说明>
返回类型 类名<形参1的名字,...,形参n的名字>函数名(列表)
{
函数体
}
使用类模板实现数组逆序
#include<MyStack.cpp>//attention especially for template

上面的例子用模板类实现
MyStack.h

 

 MyStack.cpp

 

 

 

 

main.cpp

 

 

 
posted @ 2019-09-15 10:32  柠檬味呀  阅读(127)  评论(0编辑  收藏  举报