首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
admin
2010-03-29
98
问题
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。
生成的链式栈如下图所示。
〈IMG onClick=over(this) title=放大 src="tp/jsj/2jc++j28.1.gif"〉
下面是实现程序,请填空完成此程序。
#include 〈iostream〉
using namespace std;
class stack;
class node
{
int data;
node *prev;
public:
node(int d, node *n)
{
data=d;
prev=n;
}
friend class stack;
};
class stack
{
node *top; //栈头
public:
stack()
{
top=0;
}
void push(int i)
{
node *n=【 】;
top=n;
}
int pop()
{
node *t=top;
if (top)
{
top=top-〉prev;
int c= t-〉data;
delete t;
return c;
}
return 0;
}
int main ()
{
stack s;
s.push(6);
s.push(3);
s.push (1);
return 0;
}
选项
答案
new node(i,top)
解析
本题考核友元类以及对象成员的应用,属于综合考题。本程序中定义了两个类node和stack,用于实现堆栈的压入和弹出操作。其中,类 stack是类node的友元类,这样类stack中的成员可以访问类node中的所有成员。在类node中,定义两个私有变量:整型变量data和对象指针prev。变量data用于保存节点的数值,而对象指针prey用于指向上一节点。在类node的构造函数中,形参是数据d和对象指针n。在类stack中,定义了一个私有变量,栈顶指针top,并在构造函数中赋值0(即指针为空)。
函数push()实现入栈操作,即把形参i压入栈中,那么此时应该创建一个新的节点,并让这个节点的prev指针指向栈顶,即top。然后让top指针指向新的节点。所以在push()函数中应填入“node*n=new node(i,top)”。类stack中的pop()函数实现数据的弹出功能。先定义了一个对象指针t指向栈顶节点。然后判断堆栈是否为空,如果为空,则返回0,否则就弹出栈顶节点的值。那么应该先将栈顶指针后退一个节点,然后把对象t指针指向的节点值弹出,并删除节点t。
转载请注明原文地址:https://kaotiyun.com/show/ATjp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有以下程序,程序运行后的输出结果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}
有以下程序#include#deftneN4voidfun(inta[][N],intb[]){inti;for(i=0;i
有以下程序voidfun(int*P,int*q){intt;t=*p;*P=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的输出结果是
有以下程序#include<stdio.h>voidmain(){charb,c;inti;b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+
若变量已正确定义并赋值,以下不能构成C语句的选项是
若有定义语句:intx=10;则表达式x-=x+x的值为()。
设栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为()。
设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0则能进行正确输入的语句是
请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中X是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。注
设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0<回车>则能进行正确输入的语句是
随机试题
为消除主轴锥孔轴线径向圆跳动检验时检验棒误差对测量的影响,可将检验棒相对主轴每隔()插入一次进行检验,其平均值就是径向圆跳动误差。
骨软骨瘤临床表现为
熔断器的熔丝额定电流选择,不应小于电容器额定电流的()倍。
根据公司法律制度的规定,当公司出现特定情形,继续存续会使股东利益受到重大损失.通过其他途径不能解决,持有公司全部股东表决权10%以上的股东提起解散公司诉讼的。人民法院应当受理。下列各项中,属于此类特定情形的是()。
珍宝岛烈士陵园位于()境内。
按配送组织者不同分类有()。
有时即使我们保持注意的高度集中性,但也依然会不随意跳跃,这种现象属于()
下列关于死刑的说法中,错误的是()。
求微分方程y"+4y’+4y=eax的通解.
设计软件结构是软件生命周期的()。
最新回复
(
0
)