C++中,怎样建立一个栈,具体的代码是什么?

我的问题现在已有一个数组,a[5]={1,2,3,4,5};之后将底指针base指向第一个元素base=&a[0];现在的问题是顶指针top怎样指向数组a[5]的下一个元... 我的问题现在已有一个数组,a[5]={1,2,3,4,5}; 之后将底指针base
指向第一个元素base=&a[0];
现在的问题是顶指针top怎样指向数组a[5]的下一个元素,是否可以写成top=&a[4]+1?
这里数组已经满了,顶指针怎么样才能指向数组的下一个元素?
求大神指教,谢谢
展开
 我来答
左自强
推荐于2017-09-14 · TA获得超过385个赞
知道小有建树答主
回答量:528
采纳率:0%
帮助的人:352万
展开全部
这是链式栈
#include<iostream>
using namespace std;
class node{
public:
int data;
node *next;
node(){next=NULL;}
node(int data1,node *next1)
{
data=data1;
next=next1;
}
~node(){}
};
class linkstack{
private:
node *top;
public:
linkstack(){top=NULL;}
~linkstack(){}
int length();
bool empty(){return top==NULL;}
void push(int e);
void pop(int &e);
void display();
};
int linkstack::length()
{
int count=0;
for(node *temp=top;temp!=NULL;temp=temp->next )
{
count++;
}
return count;
}
void linkstack::push(int e)
{ node *temp=new node(e,top);
top=temp;
}
void linkstack::pop(int &e)
{ if (!empty())
{node *temp=top;
top=top->next;
e=temp->data;
delete temp;
}
}
void linkstack::display()
{
for(node *temp=top;temp!=NULL;temp=temp->next )
{
cout<<temp->data <<" ";
}
cout<<endl;
}
int main()
{ int i,x,e;
linkstack a;
cout<<"输入要建立栈的长度:"<<endl;
cin>>x;
for(i=1;i<=x;i++)
{cout<<"请输入要入栈的"<<i<<"个数据:"<<endl;
cin>>e;
a.push (e);
}
cout<<"显示队栈中的元素为:"<<endl;
a.display ();
cout<<"输入出栈元素个数:";
cin>>x;
cout<<"出栈元素为:";
for(i=1;i<=x;i++)
{a.pop (e);
cout<<e<<" ";
}
cout<<endl;
cout<<"显示栈中的剩余元素为:"<<endl;
a.display ();
return 0;
}

这是顺序栈
#include<iostream>
using namespace std;
class sqstack
{
private:
int top;
int maxsize;
int *elem;
public:
sqstack(int size)
{maxsize=size;
elem=new int[maxsize];
top=0;
}
~sqstack(){delete []elem;}
int length();
bool empty(){return top==0;}
void push(int e);
void pop(int &e);
void display();
};
int sqstack::length()
{
return top;
}
void sqstack::push(int e)
{ elem[top++]=e;

}
void sqstack::pop(int &e)
{ if (!empty())
{e=elem[--top];
;
}
}
void sqstack::display()
{
for(int i=top-1;i>=0;i-- )
{
cout<<elem[i] <<" ";
}
cout<<endl;
}
int main()
{ int i,x,e;
sqstack a(100);
cout<<"输入要建立栈的长度:"<<endl;
cin>>x;
for(i=1;i<=x;i++)
{cout<<"请输入要入栈的"<<i<<"个数据:"<<endl;
cin>>e;
a.push (e);
}
cout<<"显示队栈中的元素为:"<<endl;
a.display ();
cout<<"输入出栈元素个数:";
cin>>x;
cout<<"出栈元素为:";
for(i=1;i<=x;i++)
{a.pop (e);
cout<<e<<" ";
}
cout<<endl;
cout<<"显示栈中的剩余元素为:"<<endl;
a.display ();
return 0;

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滨崎步最爱
2011-10-16 · TA获得超过665个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:460万
展开全部
不得分兄明显是在欺负LZ没学过标准库,哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不想得分
2011-10-16 · TA获得超过164个赞
知道答主
回答量:146
采纳率:0%
帮助的人:108万
展开全部
有现成的,何必自己在写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式