首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 〈IMG onClick=over(this) title
admin
2010-03-29
112
问题
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类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(){inti=5;do{if(i%3=1)if(i%5==2){printf("**%d",i);break;}
有以下函数:intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=’\0’){x++;y++;n++:}returnn:}函数的功能是()。
学校的数据库中有表示系和学生的关系:系(系编号,系名称,系主任,电话,地点),学生(学号,姓名,性别,入学日期,专业,系编号),则关系学生中的主键和外键分别是()。
已定义以下函数intfun(int*p){return*p;}fun函数返回值是
对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是()。
设变量均已正确定义,若要通过scanf(”%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符)
设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为
请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,字符串数组中的M个字符串为AAAABBBBBBBCC则合并后的字符串的内容应是:AA
若变量已正确定义为int型,要通过语句scanf(”%d,%d,%d”,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格)()。
设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0<回车>则能进行正确输入的语句是
随机试题
A.《霉疮秘录》B.《刘涓子鬼遗方》C.《千金方》D.《肘后备急方》E.《晋书》
根性感觉障碍表现为
下列不属于红细胞病理性减少的是
胆石症的病因包括
下列关于零售商业物业租金的表述中,错误的是()。
前后相继的现象之间的联系就是因果联系。()
1.打开工作簿文件EX10.XLS(内容如下),将工作表sheet1的A1:D1单元格合并为一个单元格,内容居中;计算“金额”列的内容(金额=数量×单价),将工作表命名为“购买办公用品情况表”。2.打开工作簿文件EX10.XLS,对工作表“购买办公
•Lookatthestatementsbelowandatthe5passages.•Which(A,B,C,DorE)doeseachstatement1-8referto?•Foreachsta
我总觉得,凡是为了非倾吐不可而写的作品,都是充满了真情实感的。反之,只是为写作而写作,如上之为应付编辑朋友,下之为多拿稿费,这类文章大都是尽量地往长里写,结果是即便有一点点的感情,也被冲洗到水分太多、淡而无味的地步。当由一个人物,一桩事迹,一幅画
Asshewalkedroundthehugedepartmentstore,Elaine【C1】______howdifficultitwastochooseasuitableChristmaspresentforh
最新回复
(
0
)