请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为:
The element of stack are:4 3 2 1
注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include <iostream>
using namespace std;
const int Size=5;
class Stack;
class Item
public:
//**********found**********
Item(const int&val):______
//构造函数对item进行初始化
private:
int item;
Item* next;
friend class Stack;
;
class Stack
public:
Stack():top(NULL)
~Stack();
int Pop();
void Push(const int&);
private:
Item*top;
:
Stack::~Stack()
Item*p=top,*q;
while(p!=NULL)
q=p->next;
//**********found**********
______;//释放p所指向的节点
p=q;
int Stack::Pop()
Item* temp;
int ret;
//**********found**********
______;//使temp指向栈顶节点
ret=top->item;
top=top->next;
delete temp;
return ret;
void Stack::Push(const int& val)
Item* temp=new Item(val);
//**********found**********
______;
//使新节点的next指针指向栈顶数据
top=temp;
int main ()
Stack s;
for(int i=1;i<Size;i++)
s.Push(i);
cout<<"The element of stack are:";
for(i=1;i<Size;i++)
return 0;
参考答案:(1)item(val)
(2)delete[]p
(3)temp=top
(4)temp->next=top
解析: 本题考查堆栈类Stack类、Item类、构造函数、析构函数、成员函数和函数调用。堆栈类的节点一般使用指针表示,也就会考查到指针的相关知识点,要注意释放指针应使用delete[]语句。
(1)主要考查构造函数,对私有成员进行初始化,即item(val)。
(2)主要考查使用delete语句释放指针,一般格式为:delete[]+指针。
(3)指向栈顶节点的是top指针,要使temp指向栈顶节点,故使用语句temp=top;。
(4)指向栈顶节点的是top指针,要使新节点的next指针指向栈顶数据,故使用语句temp->next=top;。
本题涉及堆栈类,栈是先进后出,后进先出的存储结构。对于此类问题指针的使用是个难点,要记住栈中指向栈顶节点的是top指针,添加数据时要往栈顶添加。