使用C++,把栈中元素逆置,要求使用额外的一个栈,外加一些非数组的变量。求各路大侠帮忙,多谢!

 我来答
百度网友3e05322
2010-10-12
知道答主
回答量:24
采纳率:0%
帮助的人:19.1万
展开全部
就讲一下算法吧
1.设原栈为S,额外栈为T,设一个变量为A;
2.S.pop()栈顶元素赋值给A,再把S中剩下的依次pop后push入T;
3.再把A push入空的S;
4.然后把T中的所有元素依次pop后push回S,此时实现了栈S一开始的顶元素到栈底;
5.接下来重复第二步,不过剩下个栈底别pop(你懂的),然后再重复34步,实现倒置两个元素;
6,7,8....重复第五步,pop时栈S底剩两个,三个,四个...循环,最终实现倒置
ps:复杂度有点高O(n2)
桂思琴0gZ830
2010-10-05 · 超过20用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:57.2万
展开全部
这个完全是最基本的栈操作,pop栈顶元素再push到另一个栈里就ok了啊。。。
templete<class My_Type>
class CStack
{
private:
... //一些用于保存元素的数据
public:
My_Type OP_pop(); //出栈
OP_push(My_Type); //入栈
DWORD GetElementsNum(); //得到元素个数
operator = (...); //重载"="完成元素拷贝操作
...其它接口
};

void main()
{
CStack<int> stackA,stackB;

... //设置元素操作
DWORD nNum = stackA.GetElementsNum();
for(DWORD i = 0;i<nNum;i++)
StackB.OP_push(StackA.OP_pop()); //这里就完成了将StackA元素逆置到StackB中的操作
StackA = StackB;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoniuzzm
2010-10-05 · TA获得超过404个赞
知道小有建树答主
回答量:424
采纳率:100%
帮助的人:324万
展开全部
#include<iostream>
using namespace std;

int main()
{
int a[80],b[80],*p1,*p2;//空间大点
int n;
cin>>n;
for(int i=0;i!=n;i++)
cin>>a[i];
p1=&a[0];//使p1指向a的第一个元素
p2=&b[n-1];//使p2指向b的第n个元素
for(int i=0;i<n;i++,p1++,p2--)
*p2=*p1;
for(int i=0;i<n;i++)
cout<<b[i]<<" ";
cout<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龍貓吖
2010-10-05 · 超过12用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:29.4万
展开全部
不知道我学习不好`坐下任务
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式