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?
这里数组已经满了,顶指针怎么样才能指向数组的下一个元素?
求大神指教,谢谢 展开
指向第一个元素base=&a[0];
现在的问题是顶指针top怎样指向数组a[5]的下一个元素,是否可以写成top=&a[4]+1?
这里数组已经满了,顶指针怎么样才能指向数组的下一个元素?
求大神指教,谢谢 展开
展开全部
这是链式栈
#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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不得分兄明显是在欺负LZ没学过标准库,哈哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有现成的,何必自己在写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询