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

建立顺序存储的栈,并对之进行入栈、出栈、取栈顶元素操作的c语言算法

发布网友 发布时间:2022-05-05 17:07

我来回答

2个回答

热心网友 时间:2023-10-09 03:32

#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<=top;i++) Array[i]=elements[i];
MAX=MAX+stackIncreament;
delete []elements;
//elements=Array;
}

void SeqStack::output1() //元素入栈顺序输出
{
int n=0;
int t=top;
for(int i=0;i<top;i++)
{
printf(" %d",elements[i]);
n++;
if(n%10==0)
printf("\n");
}
}

void SeqStack::output(int x) //栈内元素输出
{
printf(" %d",x);
}

//----------------------顺序栈函数--------------------------//
void SeqStack1( SeqStack A)
{
int x=-1;
int X;
printf("请输入要入栈A的元素值,以0结束:\n");
while(x!=0){ //新元素进栈
scanf("%d",&x);
A.push1(x);
}
printf("\n元素进栈顺序是 :");
A.output1();
printf("\n\n");

A.pop1(X); //元素出栈
if(!A.pop1(X))
printf("元素出栈失败 !\n");
else
{
printf("\n栈顶元素是: ");
A.output(X);
printf("\n");
printf("\n元素出栈的结果是 : ");
A.output(X);
while(A.pop1(X))
A.output(X);
}
}

void main()
{
printf("----------顺序栈的调试----------\n");
printf("\n \n");
SeqStack A;
SeqStack1(A);
printf("\n \n");
}

热心网友 时间:2023-10-09 03:33

看看还可以吧,我运行过了的
#include "stdio.h"

#define MAXN 26

char stack[MAXN];
int top=0;

int push(char x)
{if (top >= MAXN)
return(1);
stack[top++]=x;
return(0);
}

int pop(char *p_y)
{if (top == 0)
return(1);
*p_y = stack[--top];
return(0);
}

main()
{ int i;
char ch_x,ch_y;

printf("input the char you want to push\n");
scanf("%c",&ch_x);
while(ch_x!='0')
if (push(ch_x)==1) printf("failure!\n");
else
{printf("success!\n");
printf("input a char for ch_x to push\nch_x=");
getchar();
scanf("%c",&ch_x);}
i=0;
while(stack[i]!='\0')
{printf("%c ", stack[i]);
i++;} /*把输入的字符按次序输出*/

if (pop(&ch_y)==1) printf("failure!\n");
else
{printf("success!\n");
printf("The pop char is %c\n",ch_y);}
for (i=top-1; i>=0; i--)
printf("%c ", stack[i]);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
驾驶结业证是什么 驾驶员结业证到底是什么 城投水投交投区别 交投城投哪个好 ...老是出现临时文件。那位高手教我设置一下吧 ...error: one or more table pointers are invalid. modification could... ...solve求解k文件时总是提示error invalid option on the command li... jcreator 编译时出现:Invalid command line. Error : Invalid... cc1: error: invalid option `short-load-bytes' ...Nginx 提示./configure: error: invalid option "/data/soft/nginx... 便密怎么办? 用数组实现栈的功能的C语言代码? for c语言实现顺序栈的建立 顺序栈的实现C的实现 C语言编程实现顺序栈的初始化,入栈,出栈,取栈顶元素,显示操作 5分钟通便的作品目录 用c语言编写一个程序实现顺序栈的初始化,出栈和入栈。急需,谢谢 编写一个C源程序,其中包含顺序表示的空栈的创建、判断栈是否为空、进栈、出栈、取栈顶元素等操作。 怎么样缓解便密 怎么用c语言实现一个顺序栈 实体创业和网络创业,是否都能进行融资呢? 千牛怎么设置疫情停发地区 冰箱冷冻蓝色胶带需要撕掉吗 当男朋友给我发那咱们俩如何坠入爱河怎么回答? linux 的设备号满了之后系统会怎么样 linux用mknod怎么创建设备,创建了设备怎么用 主次设备号的应用 什么是主设备号和次设备号 你能结合实际说明0点5,2分之一,50%的含义吗 二分之一的含义和三分之一的含义 那位C语言高手能解决用C语言和数据结构帮我编写一个顺序栈的,实现任意表达式.注:一定要用顺序栈的! 通便的好方法 求一个顺序栈的源程序和一个顺序表的源程序(C语言版的) 用c语言可执行文件实现顺序栈的出栈、入栈、判栈空、判栈满!急求啊,谢谢各位朋友的帮助啊!!!!!! C++顺序栈的实现 C语言中用顺序栈如何实现 逆序输出 手机连接电脑外置声卡,要调试声卡手机上怎么远程? 凤凰传奇的歌曲 2019年的大米到现在还能吃吗? 英语中最美的的十大经典爱情句子什么??? 吴京导演的《战狼》是一部怎样的作品? 战狼1电影什么时候上映的 明朝灭亡后,崇祯帝的妃子和公主结局是怎样的? 在崇祯死后,那些没有自杀成功的妃嫔最后的下场怎样? 明朝皇帝死后他的妃子会咋样 每个朝代灭亡后,皇帝的妃子们都去了哪里呢? 在皇帝去世后,他的后宫嫔妃们将面临怎样的命运? 明朝死的最惨的妃子是谁,貌美如花却惨遭凌迟? 古代后宫佳丽三千,那么国破家亡后,后宫妃子都去哪了? 古代帝王驾崩以后,后宫的妃子们会被怎样处置?