1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法

作者&投稿:藩广 (若有异议请与网页底部的电邮联系)
c++堆栈中 top() pop()的具体作用是什么~

top()是取栈顶元素
pop()是弹出栈顶元素

stack a;
a.push(1); // 1
a.push(2); // 1 2
a.push(3); // 1 2 3
int c = a.top(); // c = 3
a.pop(); // 1 2
a.push(4); // 1 2 4
c = a.top(); // c = 4

#include
using namespace std;
const int MAX=5; //假定栈中最多保存5个数据
//定义名为stack的类,其具有栈功能
class stack {
//数据成员
float num[MAX]; //存放栈数据的数组
int top; //指示栈顶位置的变量
public:
//成员函数
void init(void) { top=0; } //初始化函数
void push(float x) //入栈函数
{
if (top==MAX){
cout<<"Stack is full !"<<endl;
return;
};
num[top]=x;
top++;
}
float pop(void) //出栈函数
{
top--;
if (top<0){
cout<<"Stack is underflow !"<<endl;
return 0;
};
return num[top];
}
}
//以下是main()函数,其用stack类创建栈对象,并使用了这些对象
main(void)
{
//声明变量和对象
int i;
float x;
stack a,b; //声明(创建)栈对象
//以下对栈对象初始化
a.init();
b.init();
//以下利用循环和push()成员函数将2,4,6,8,10依次入a栈对象
for (i=1; i<=MAX; i++)
a.push(2*i);
//以下利用循环和pop()成员函数依次弹出a栈中的数据并显示
for (i=1; i<=MAX; i++)
cout<<a.pop()<<" ";
cout<<endl;
//以下利用循环和push()成员函数将键盘输入的数据依次入b栈
cout<<"Please input five numbers."<<endl;
for (i=1; i<=MAX; i++) {
cin>>x;
b.push(x);
}
//以下利用循环和pop()成员函数依次弹出b栈中的数据并显示
for (i=1; i<=MAX; i++)
cout<<b.pop()<<" ";
}

#include<iostream.h>
using namespace std;
const int MAX=5; //假定栈中最多保存5个数据
//定义名为stack的类,其具有栈功能
class stack {
//数据成员
float num[MAX]; //存放栈数据的数组
int top; //指示栈顶位置的变量
public:
//成员函数
void init(void) { top=0; } //初始化函数
void push(float x) //入栈函数
{
if (top==MAX){
cout<<"Stack is full !"<<endl;
return;
};
num[top]=x;
top++;
}
float pop(void) //出栈函数
{
top--;
if (top<0){
cout<<"Stack is underflow !"<<endl;
return 0;
};
return num[top];
}
}
//以下是main()函数,其用stack类创建栈对象,并使用了这些对象
main(void)
{
//声明变量和对象
int i;
float x;
stack a,b; //声明(创建)栈对象
//以下对栈对象初始化
a.init();
b.init();
//以下利用循环和push()成员函数将2,4,6,8,10依次入a栈对象
for (i=1; i<=MAX; i++)
a.push(2*i);
//以下利用循环和pop()成员函数依次弹出a栈中的数据并显示
for (i=1; i<=MAX; i++)
cout<<a.pop()<<" ";
cout<<endl;
//以下利用循环和push()成员函数将键盘输入的数据依次入b栈
cout<<"Please input five numbers."<<endl;
for (i=1; i<=MAX; i++) {
cin>>x;
b.push(x);
}
//以下利用循环和pop()成员函数依次弹出b栈中的数据并显示
for (i=1; i<=MAX; i++)
cout<<b.pop()<<" ";
}

#include<iostream>
using namespace std;
class sStack;
class sStack
{
public:
sStack(){};
sStack(int a,sStack *p=NULL)
{
num = a;
next = p;
}
void push();
void pop();
void display()
{
cout<<num<<"\t";
}
void play()
{
sStack *p=sStack::top;
while(p!=NULL){
p->display();
p=p->next;
}
}
protected:
static sStack *top;
int num;
sStack *next;
};
sStack* sStack::top = NULL;
void sStack::push()//压栈
{
if(sStack::top == NULL)
{
next = NULL;
}
next = sStack::top;
sStack::top = this;
}
void sStack::pop()
{
if(sStack::top!=this)
cout<<"不可出栈"<<endl;
else{
sStack::top = this->next;
this->next = NULL;
}
}

int main()
{
sStack s1(1); sStack s2(2); sStack s3(3);
//入栈
s1.push(); s1.play();cout<<endl;
s2.push(); s2.play();cout<<endl;
s3.push(); s3.play();cout<<endl;
//出栈
s3.pop(); s3.play();cout<<endl;
s2.pop(); s2.play();cout<<endl;
s1.pop(); s1.play();cout<<endl;
return 0;
}

我写了一个很简单的 很短 你扩充下就可以了

上楼的回答得很好了,顶一个!


克什克腾旗18317526353: 1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法
滑屈骨通: #include&lt;iostream.h&gt;using namespace std;const int MAX=5; //假定栈中最多保存5个数据//定义名为stack的类,其具有栈功能class stack { //数据成员 float num[MAX]; //存放栈数据的数组 int top; //指示栈顶位置的变量 public: //成员函数 ...

克什克腾旗18317526353: 如何用c++或java编一个软件 -
滑屈骨通: JAVA和C++都是面向对象语言.也就是说,它们都能够实现面向对象思想(封装,继乘,多态).而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全...

克什克腾旗18317526353: 用C++实现一个JAVA代码 -
滑屈骨通: 用C++实现一个JAVA代码:第一步i采用Java实现,以下是部分代码.package tree;import java.util.Scanner;public class Main { //根节点 private Student root = null; //输入器 private Scanner scanner = new Scanner(System.in); //业务 private ...

克什克腾旗18317526353: 用C++或Java语言编写程序
滑屈骨通: #include<iostream.h> void main() { int P;//接收顾客付款的money int R;//表示货物的价格. //假设每位顾客只买一样物品. cout<<"请输入商品价钱R:"; cin>>R; cout<<"请输入顾客付款P:"; cin>>P; cout<<"最佳找零方案:\n"<<(P-R)/50<<"张50元\n"; cout<<((P-R)%50)/10<<"张10元\n"; cout<<((P-R)%10)/5<<"张5元\n"; cout<<(P-R)%5<<"张1元\n"; }

克什克腾旗18317526353: 用C++或Java语言编写程序 -
滑屈骨通: #include using namespace std;int main() { unsigned int N50 = 50; unsigned int N50_counter = 0; unsigned int N10 = 10; unsigned int N10_counter = 0; unsigned int N5 = 5; unsigned int N5_counter = 0; unsigned int N1 = 1; unsigned int N1_...

克什克腾旗18317526353: c++或java 写一个解3阶数独的程序 -
滑屈骨通: 直接定义bool a[10][10][10]就行了 另外补充一句,没有人像你这样解数独的,普遍做法一般都是开一个a[10][10]表示数独,或者转化成完美覆盖问题用Dancing Links

克什克腾旗18317526353: 何如用c++或者Java编写出简单的骰子游戏(代码及原理)就是一
滑屈骨通: //使用rand()会返回一随机数值,范围在0至RAND_MAX 间. //在调用此函数产生... die=(int)(rand()%6)+1; //使用 rand() 返回一随机数, 使用 % 运算使数值在0-5之间...

克什克腾旗18317526353: 求java或c++大神帮忙写一个关于三国人物帮派的算法. -
滑屈骨通: 代码你大概参考下,可以根据自己的需求进行修改 class Person{ String name; GuoJia guojia; public Person() { } public Person(String name, GuoJia guojia) { this.name = name; this.guojia = guojia; } boolean beFriend(Person p){ int num =(int) (Math....

克什克腾旗18317526353: 用java编写一个程序从1加到10 并输出值 -
滑屈骨通: public test { public static void main(int argc,String args[]) { int i=1; int sum=0; while(i<10)sum+=i; System.out.print(sum);} }其实就和楼上的一样只不过我的i<10,并没有等于10

克什克腾旗18317526353: 用C语言和Java编写一个窗口化程序,用哪个语言实现更简单些? -
滑屈骨通: 用C语言实现就比较复杂了,首先你要有C语言的基础,在这之上你可以写一些没有界面的逻辑性代码,假如你想要学习写界面,很悲催的告诉你,你需要学一个MFC的东西,这个东西就是用C,C++实现界面程序的,它是C++的一个类库,然后你要用它写出一个界面,你还需要一个不是特别容易的学习过程;总之MFC是属于比较过时,复杂的东西了;而java相对来说就特别容易了,楼上提到的C#,我觉得和java差不多.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网