C++ Logo
C++二级在线二级在线
首页选择题程序题成为会员帮助其他科目

链式栈操作

请修改编辑器中的代码,完成以下功能:实现一个基于链式存储结构的栈类 Stack 和数据项类 Entry。Stack 类应支持基本的栈操作,包括 push 和 pop。Entry 类用于表示栈中的数据项,每个数据项包含一个整数数据和指向下一个 Entry 的指针。程序应在 main 函数中创建一个整数数组 a,包含元素 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},并将这些元素依次压入栈中,然后依次弹出栈中的元素并输出。程序不需要输入。 输出示例: 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0

#include <iostream>
using namespace std;

class Entry {  //链接栈的结点
public:
  Entry* next;  // 指向下一个结点的指针
  int data;     // 结点数据

  //**********found**********
  Entry(Entry* n, int d) : _______________________, data(d) { }
};

class Stack {
  Entry* top;
public:
  Stack() : top(0) { }
  ~Stack()
  {
    while (top != 0) 
    {
      Entry* tmp = top;
      //**********found**********
      top = _______________________;  // 让top指向下一个结点
      delete tmp;
    }
  }
  void push(int data)  // 入栈
//push函数是把入栈数据放入新结点中,并使之成为栈顶结点,原来的结点成为新结点的下一个结点
  {
    //**********found**********
    top = new Entry(_______________________, data);
  }
  int pop()
  {
    if (top == 0) return 0;
    //**********found**********
    int result = _______________________;  // 保存栈顶结点中的数据
    Entry* tmp = top;
    top = top->next;
    delete tmp;
    return result;
  }
};

int main()
{
  int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  Stack s;

  int i = 0;
  for (i = 0; i < 10; i++) {
    cout << a[i] << ' ';
    s.push(a[i]);
  }
  cout << endl;
  for (i = 0; i < 10; i++) {
    cout << s.pop() << ' ';
  }
  cout << endl;
  return 0;
}

控制台

调试终端

准备就绪