算法第2天:基本数据结构---栈
线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。
在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。
栈:它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 栈也称为后进先出表(LIFO表)。 Stack.php
#include < iostream >
template< class Type>
class Stack
{
private:
int top, MaxSize;
Type *stack;
public:
Stack(int MSize): MaxSize(MSize)
{
stack = new Type[MaxSize];
top = -1;
}
~Stack()
{
delete [] stack;
}
inline bool Add(const Type item)
{
if(StackFull())
{
std::cout << "Stack is full"; return false;
}
else
{
stack[++top] = item; return true;
}
}
inline bool Delete(Type& item)
{
if(StackEmpty())
{
std::cout << "Stack is empty"; return false;
}
else
{
item = stack[top--]; return true;
}
}
inline bool StackEmpty()
{
if(top < 0) return true;
else return false;
}
inline bool StackFull()
{
if(top >= (MaxSize-1)) return true;
else return false;
}
inline void display()
{
for(int i = 0; i <= top; ++i)
{
std::cout << stack[i] << " ";
}
std::cout << std::endl;
}
};
main.cpp
#include "Stack.cpp"
int main(int argc, char* argv[])
{
int item = 0;
Stack< int > s(6);
s.Add(5);
s.Add(10);
s.Add(12);
s.Delete(item);
s.display();
std::cout << item << std::endl;
std::cout << "Press enter or return to continue.";
std::cin.get();
return 0;
}