问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构栈插入和删除的实现

发布网友 发布时间:2022-04-23 17:36

我来回答

2个回答

热心网友 时间:2022-04-23 19:06

#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;

}

热心网友 时间:2022-04-23 20:24

用模板表示的:
#define STACKINCREMENT 10
template<class T> class SeqStack
{public:
SeqStack(int size);
~SeqStack(){delete []elem;}
int SeqStackEmpty()const//判断栈是否为空,若是返回1,否则返回0
{return top==-1;}
void SeqStackClear(){top=-1;}//将栈清空
int SeqStackLength(){return top+1;}//求栈长度,即栈中数据元素的个数
int SeqStackFull() //判断栈是否满,若满返回1,否则返回0
{return top==maxsize-1; }
T&SeqGetTop();
void Push(const T& e);
T& Pop();
private:
T *elem;//存放栈元素的一维数组
int top;//栈顶元素的数组位置
int maxsize;// 栈数组的容量
};

template<class T>
SeqStack<T>::SeqStack(int size):top(-1),maxsize(size)
{
if(maxsize<1) throw"stack capacity must be>0";
elem=new T[maxsize];
if(elem==0) {cout<<"内存分配失败";exit(0);}
}
template<class T>
T& SeqStack::SeqGetTop()
{
if(SeqStackEmpty()){cout<<"栈空";exit(0);}//若栈空,则停止运行
return elem[top];
}
template<class T>
T& SeqStack<T>::Pop()
{if(SeqStackEmpty()) {cout<<"栈空";exit(0);}
return elem[top--];//返回出栈值后在减一
}

template<class T>
void SeqStack<T>::Push(const T& e)
{
if(SeqStackFull) //若栈满,则对其空间进行扩展
{
T *p=new T[maxsize+STACKINCREMENT];
if(!p) {cout<<"内存溢出";exit(0);}
for(int i=0;i<maxsize;i++) p[i]=elem[i];
delete []elem;
elem=p;p=NULL;
maxsize+=STACKINCREMENT;
}
elem[++top]=e;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
异想记歌词,杨幂唱滴! 有什么好打理的烫发发型可以推荐? 有哪些韩系卷发造型比较好打理? 哪些短发卷发造型比较好打理? 什么样的卷发发型比较好打理? 好打理的卷发造型有哪些值得推荐? 有哪些卷发发型比较好打理? 有哪些卷发造型比较好打理? 为什么离线迅雷看看播放器就不能用了,毕竟里面的是已经下载好了的,知... 迅雷离线用不了,连云播的搜索都用不了,是被封了吗? 三鲜鱼面怎么做? 鱼面炒瘦肉怎样炒 下雨摘石榴有影响吗? 二八姑娘摘石榴,人十六石榴十六。下联是什低 两只猴子摘石榴什么意思? 酒驾撞死人如何不坐牢 交通事故撞死人怎么样才能不坐牢? 如果酒驾撞死人不坐牢要判多久 醉驾撞死人可以不判刑吗 在什么情况下撞死人不判刑 酒驾撞死人事故如何不坐牢 太阳能锂电池路灯样品可以空运到国外吗 微信注册之后性别和能更改吗 微信注册之后性别和能更改吗 性别可以更改吗 怎么修改性别 怎么设置性别 男女怎么修改 怎么改性别 数据结构栈实现的代码有些问题,自已看不出,请高手指教 吃蜂蜜对肠道有什么好处 蜂蜜对润肠道是否有效果,你有哪些看法? 蜂蜜对润肠道是否有效果?你有什么看法? 哪些蜂蜜润肠道最好呢? 蜂蜜真的对肠道功能有所改善吗 为什么喝蜂蜜肠道会不舒服? 吃蜂蜜有助于肠道的消化吸收么 蜂蜜治疗胃肠道哪些疾病? 蜂蜜能助消化吗 常喝蜂蜜对肠道有什么样的好处? 蜂蜜在肠道里会产生大量气体吗?腹胀适合和蜂蜜吗? 蜂蜜对肠胃有什么好处 猪和鸡相配婚姻如何属相配不配 吃蜂蜜对肠道有什么好处? 猪和鸡合伙做生意怎么样 猪和鸡在一起好不好? 猪和鸡能在一起养吗 猪与鸡的婚姻相配吗 哪个炒股软件有秒钟分析周期 请教excel绘图问题,我想对下图的数据在9:15到15:00之间进行时间轴标记,达到附图效果,请问该怎么做?