首页 > 试题广场 >

编写一个类,实现简单的桟。栈中有以下操作:元素入栈,读出栈顶

[问答题]
编写一个类,实现简单的桟。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型的数组构成。先后做如下操作:
创建栈;
将10入栈;
将12入栈,
将14入栈:                                                                  、
读出并输出栈顶元素:
退栈;
读出并输出栈顶元素。

推荐
先设立常量值10,创建一个栈的基础stck和一个栈的指示器tos,声明其中的操作,架框架:
//-----------------------------------
//Stack.h
//-----------------------------------
const int SIZE =10;
//-----------------------------------
class Stack{
  int stck[SIZE];                  // holds the stack
  int tos                        // index of top-of-stack
public:
  Stack():tos(0){}
  int top() const;
  void push(int ch);                  // push integer to stack
  void pop();                     // pop integer from stack
};//---------------------------------
创建栈对象时,需要将栈的指示器复位成0,表示栈空状态。其实现代码见下面的Stack.cpp文件描述:
//-----------------------------------
//Stack.cpp
//-----------------------------------
#include"Stack.h"
#include<iostream>
using namespace std;
//-----------------------------------
int Stack::top()const{
  if(tos==0){
    std::cout<<"\nStack is emty\n";
    return 0;    //return null on empty stack
  }
  return stck[tos-1];
}//----------------------------------
void Stack::push(int ch){
  if(tos==SIZE){
    std::cout<<"\nStack is full\n";
    return
  }
  stck[tos++]=ch;
}//----------------------------------
void Stack::pop(){
  if(tos==0){
    std::cout<<"\nStack is empty\n";
    return;
  }
  --tos;
}//----------------------------------
涉及栈类应用的代码表述如下:
//-----------------------------------
//EX0805.cpp
//栈应用
//-----------------------------------
#include"Stack.h"
#include<iostream>
using namespace std;
//-----------------------------------
int main() {
  Stack s;
  s.push(10);
  s.push(12);
  s.push(14);
  std::cout<<s.top()<<"\n";
  s.pop();
  std::cout<<s.top()<<"\n";
}//----------------------------------
运行结果为:
14
12

发表于 2018-04-18 20:35:26 回复(0)
头文件写类的声明, 其成员函数只做声明而不做定义,就可以不用加入库和引用数据空间了。 TOS设置成了类中的全局变量
编辑于 2019-07-31 00:48:41 回复(0)
写的还不错
发表于 2018-04-26 17:14:20 回复(0)