链式栈操作
请修改编辑器中的代码,完成以下功能:实现一个基于链式存储结构的栈类 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;
}
控制台
调试终端
