算法第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;
}