b_11_2.cpp

来自「C++应用教程原码,里面包含该书中有十三章内容的代码,详细具体」· C++ 代码 · 共 82 行

CPP
82
字号
#include "stdafx.h"
#include <iostream>
#include <string>
#include<iomanip>
#include<fstream>
using namespace std;
template <class Type>
class Stack {
public:
	Stack(int size);
	~Stack()
	{ delete [] stack;}
	void push(Type i);
	Type pop();
private:
	int tos,length;
	Type *stack;
};

template <class Type>
Stack <Type>::Stack(int size)
{  stack = new Type[size];
   if (!stack)
   { cout << "对不起,无法创建栈!"<<endl;
     exit(-1);
   }
   length = size;
   tos = 0;
}
template <class Type>
void Stack <Type>::push(Type i)
{  if (tos == length)
   { cout << "对不起,栈已经满了!"<<endl;
     return;
   }
   stack[tos++]=i;
}
template <class Type>
Type Stack <Type>::pop()
{  if (tos == 0)
   { cout << "对不起,栈已经空了!"<<endl;
     return 0;
   }
   return stack[--tos];
}
void main()
{ Stack <int> a(8);
  Stack <double> b(8);
  Stack <string> c(8);
  cout << "依次压入栈内的数:"<<endl;
  for (int i=0;i<8;i++)
  {   cout <<setw(5)<<i;
	  a.push(i);
  }
 cout << endl<<"依次弹出栈外的数:"<<endl;
  for (int i=0;i<8;i++)
	  cout << setw(5)<< a.pop();

  double doub[4]={3.12,32.68,1.11,32.34};
  cout <<endl<<"依次压入栈内的浮点数:"<<endl;
  for (i=0;i<3;i++)
  {   cout <<setw(10)<<doub[i];
	  b.push(doub[i]);
  }
 cout << endl<<"依次弹出栈外的浮点数:"<<endl;
 for (i=0;i<3;i++)
	  cout << setw(10)<< b.pop();

  string str[3]={"hello","good","morning"};
  cout <<endl<<"依次压入栈内的字符串:"<<endl;
  for (int i=0;i<3;i++)
  {   cout <<setw(10)<<str[i];
	  c.push(str[i]);
  }
 cout << endl<<"依次弹出栈外的字符串:"<<endl;
 for (int i=0;i<3;i++)
	  cout << setw(10)<< c.pop();
 cin.get(); //等待结束,以便调测程序,可以删除
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?