首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
admin
2010-03-29
82
问题
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类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全国计算机二级
相关试题推荐
有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zha
有以下程序,程序运行后的输出结果是#definePT3.5:#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}
有以下程序main(){inta=3;a+=a-=a*a;printf("%d\n",a);}程序的输出结果是
以下选项中不属于C语言程序运算符的是
有下列程序:#include<stdio.h>/*fun函数的功能是将a所指数组元素从大到小排序*/voidfun(int*a,intn)main(){intt,i,j;{intc[10]={1,2,3,4,5,6,7,8,9,0}
下面结构体的定义语句中,错误的是()。
若有定义语句:chars[10]=“1234567\0\0”;,则strlen(s)的值是()。
已定义以下函数intfun(int*p){return*p;}fun函数返回值是
若有定义:intw[3][5];则以下不能正确表示该数组元素的表达式是
设有以下函数:voidfun(intn,char*s){……}则下面对函数指针的定义和赋值均正确的是
随机试题
【背景资料】某宿舍楼为砖混结构,横墙承重,开间尺寸为3.6m,楼板采用非预应力钢筋混凝土空心楼板。施工中发生如下事件:事件一:为加快施工进度,项目经理要求吊装时板间不留置接缝,擅自减少灌浆工序。事件二:为抢工期,项目经理要求楼板混凝土强度达到设计强度
简述乡、民族乡、镇的人民代表大会行使的职权。
男,10岁,双上肢及右下肢Ⅲ度烧伤30%,伤后7天体温不升,呼吸40次/分,淡漠不语,创面颜色转暗,创缘下陷,痂下少许积液。首选创面处理方法是
A.- B.1+ C.2+ D.3+ E.4+厚涂片抗酸杆菌检查全视野发现10~9条抗酸杆菌可报告为
导致幼儿缺铁性贫血最主要的原因是()。
公安机关办理行政案件中,对于被侵害人或者善意第三人合法占有的财产,不得扣押,应当予以:
Sowhatisdepression?Depressionisoftenmoreaboutangerturned【C1】______thanitisaboutsadness.Butit’susually【C2】______
SQL的查询结果可以存放到多种类型的文件中,下列哪项的文件类型都可以用来存放查询结果()。
软件设计中划分模块的一个准则是( )。
ThebiggestproblemfacingChileasitpromotesitselfasatouristdestinationtobereckonedwith,isthatitisattheendof
最新回复
(
0
)