以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。生成的链式栈如下图所示。〈IMG nClick=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;}
以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。
生成的链式栈如下图所示。
〈IMG nClick=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;
}
相关考题:
设链式栈中节点的结构为(data,link),且top是指向栈顶的指针。则想将栈顶节点的值保存到X中并将栈顶节点删除应执行______。A.x=top→data;top=top→link;B.x=top→data;C.x=top;top=top→link;D.top=top→link;X=top→data;
阅读下列说明和C程序,将应填入(n)处的字句写在对应栏中。[说明]借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历过程如下:若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。函数中使用的预定义符号如下:typedef struct BiTNode{int data;struct BiTNode *iChiid,*rChiid;} BiTNode,*BiTree;typedef struct SNode{/*链栈的节点类型*/BiTree elem;struct SNode *next;}SNode;[函数]int InOrderTraverse(BiTree root){BiTree P;SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/P=root;while(p !=NULL || stop !=NULL){if( (1) ){ /*不是空树*/q=(SNode*)malloc(sizeof q);if(q==NULL)return-1;/*根节点指针入栈*/(2);q->elem=P;stop=q;P=(3); /*进入根的左子树*/}else{q=stop;(4); /*栈顶元素出栈*/printf("%d|,q->elem->data); /*防问根节点*/P=(5); /*进入根的右子树*/free(q); /*释放原栈顶元素*/}/*if*/}/*while*/return 0;}/*InOrderTraverse*/(1)
使用VC6打开考生文件夹下的工程MyProj8。此工程包含一个源程序文件MyMain8.cpp,该程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类node,它包含节点值和指向上一个节点的指针prey;另一个类是栈类stack,它包含栈的头指针top。但类的定义并不完整。请按要求完成下列操作,将类Sample的定义补充完成:①定义私有节点值data,它是血型的数据,以及定义一个指向上一个节点的指针prev。请在注释“//* *1* *”之后添加适当的语句。②完成构造函数node(int d,node*n)的定义,使得私有成员data和prev分别初始化为d和n。请在注释“//* *2* *”之后添加适当的语句。③完成类stack的成员函数push(int i)的类体内的定义。函数push()实现入栈这个操作,即把形参i压入栈中,那么此时应该创建一个新的节点,并让这个节点的prev指针指向栈顶。请在注释“//* *3 * *”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件MyMain8.cpp清单如下://MyMain 8.cppinclude <iostream>using namespace std;class stack;class node{private://* * 1 * *public:node(int d, node *n){//* * 2 * *}friend class stack;};class stack{node *top; //栈头public:stack(){top=0;}void push(int i){//* * 3 * *}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;}
设链式栈中节点的结构为(data,link),且top是指向栈顶的指针。若想摘除链式栈的栈顶节点,并将被摘除节点的值保存到x中,则应执行下列()操作。A.x=top->data;top=top->link;B.top=top->link;x=top->data;C.x=top;top=top->link;D.x=top->data;
栈的特点是后进先出,若用单链表作为栈的存储结构,并用头指针作为栈顶指针,则( )。A.入栈和出栈操作都不需要遍历链表B.入栈和出栈操作都需要遍历链表C.入栈操作需要遍历链表而出栈操作不需要D.入栈操作不需要遍历链表而出栈操作需要
A、B、C、D、E五个字母,对一个栈进行了“入栈、入栈、出栈、入栈、入栈、出栈、出栈、入栈、出栈、出栈”的操作,那么操作完时,它们的顺序变为()A.B、D、C、E、AB.A、B、C、D、EC.E、D、C、B、AD.A、D、E、C
18、A、B、C、D、E五个字母,对一个栈进行了“入栈、入栈、出栈、入栈、入栈、出栈、出栈、入栈、出栈、出栈”的操作,那么操作完时,它们的顺序变为()A.B、D、C、E、AB.A、B、C、D、EC.E、D、C、B、AD.B、A、D、E、C