建立顺序存储的栈,并对之进行入栈、出栈、取栈顶元素操作的c语言算法
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 17:36:20
建立顺序存储的栈,并对之进行入栈、出栈、取栈顶元素操作的c语言算法
#include "process.h"
#include "stdio.h"
#include "assert.h"
const int stackIncreament=20; //栈溢出时扩展空间的增量
class SeqStack
{
private:
int top; //栈顶指针
int MAX; //栈的最大可容纳个数
int *elements; //存放栈中元素的栈数组
void overflowProcess(); //栈的溢出处理
public:
SeqStack(int sz=50); //构造函数
SeqStack() { delete[]elements; } //析构函数
bool pop1(int & x); //元素出栈
void push1(const int & x); //新元素进栈
bool IsEmpty1()const; //判断栈空与否
bool IsFull1()const; //判断栈满与否
void output1(); //输出元素进栈顺序
void output(int x); //输出x
};
SeqStack::SeqStack(int sz):top(-1),MAX(sz)
{
elements=new int[MAX]; //创建栈的数组空间
assert(elements!=NULL); //断言:动态存储分配成功与否
}
bool SeqStack::pop1(int & x) //栈顶元素出栈
{
if(IsEmpty1()==true) return false;//判栈空否,若栈空则函数返回
x=elements[top--]; //栈顶指针退1
return true; //退栈成功
}
void SeqStack::push1(const int & x) //新元素进栈
{
if(IsFull1()==true) overflowProcess(); //栈满则溢出处理
elements[++top]=x; //栈顶指针先加1,再进栈
}
bool SeqStack::IsEmpty1() const //判断栈空与否
{
return (top==-1)?true:false;
}
bool SeqStack::IsFull1()const //判断栈满与否
{
return (top==MAX-1)?true:false;
}
void SeqStack::overflowProcess() //栈的溢出处理
{
//私有函数,扩充栈的存储空间.
int *Array=new int[MAX+stackIncreament]; //和课本不一样
if(Array==NULL)
{
printf("存贮分配失败 !\n");
exit(1);
}
for(int i=0;i
#include "stdio.h"
#include "assert.h"
const int stackIncreament=20; //栈溢出时扩展空间的增量
class SeqStack
{
private:
int top; //栈顶指针
int MAX; //栈的最大可容纳个数
int *elements; //存放栈中元素的栈数组
void overflowProcess(); //栈的溢出处理
public:
SeqStack(int sz=50); //构造函数
SeqStack() { delete[]elements; } //析构函数
bool pop1(int & x); //元素出栈
void push1(const int & x); //新元素进栈
bool IsEmpty1()const; //判断栈空与否
bool IsFull1()const; //判断栈满与否
void output1(); //输出元素进栈顺序
void output(int x); //输出x
};
SeqStack::SeqStack(int sz):top(-1),MAX(sz)
{
elements=new int[MAX]; //创建栈的数组空间
assert(elements!=NULL); //断言:动态存储分配成功与否
}
bool SeqStack::pop1(int & x) //栈顶元素出栈
{
if(IsEmpty1()==true) return false;//判栈空否,若栈空则函数返回
x=elements[top--]; //栈顶指针退1
return true; //退栈成功
}
void SeqStack::push1(const int & x) //新元素进栈
{
if(IsFull1()==true) overflowProcess(); //栈满则溢出处理
elements[++top]=x; //栈顶指针先加1,再进栈
}
bool SeqStack::IsEmpty1() const //判断栈空与否
{
return (top==-1)?true:false;
}
bool SeqStack::IsFull1()const //判断栈满与否
{
return (top==MAX-1)?true:false;
}
void SeqStack::overflowProcess() //栈的溢出处理
{
//私有函数,扩充栈的存储空间.
int *Array=new int[MAX+stackIncreament]; //和课本不一样
if(Array==NULL)
{
printf("存贮分配失败 !\n");
exit(1);
}
for(int i=0;i
建立顺序存储的栈,并对之进行入栈、出栈、取栈顶元素操作的c语言算法
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
C语言:为什么线性结构的顺序存储是一种随机存取存储结构?
一道数据结构的题目顺序栈用data[0..n-1]存储数据,栈顶指针为top,其初始值为0,则出栈元素x的操作是____
写一算法求已知顺序表A中元素的最大值和次最大值.并编写C语言程序实现
设计一个"类",其中包含一个栈,并能完成如下操作:1对栈初始化,2入栈,3出栈,4统计栈元素个数,5计录
设元素入栈的顺序是1、2、3、…、n ,则所有可能的出栈序列共有几种,求详细解析啊!
设计算法以删除顺序表中重复的元素,并分析算法的时间性能
已知长度为n的线性表A采用顺序存储结构,写一时间效率有效的算法,删除数据元素[x,y]之间的所有元素.
"定义一个栈抽象类型,将数字序列(1,2,3)进行入堆栈操作,最后将这些数字进行出栈操作"帮个忙,解决下
2、设计要求:请任选一种存储方式表示队列,用C\C++语言实现队列的基本操作:
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算