删除栈顶元素c语言,[数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作...

更新时间:2023-06-30 15:47:27 阅读: 评论:0

删除栈顶元素c语⾔,[数据结构]c语⾔实现顺序栈的⼊栈,出
栈,清空,销毁等操作...
/*
顺序栈
栈的抽象数据类型
ADT 栈(stack)
Data美体裤
同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系
Operation
InitStack(*S):初始化操作,建⽴⼀个空栈S
ClearStack(*S):将栈清空
三国演义成语
StackEmpty(S):若栈为空,返回true,否则返回fal
GetTop(*S,*e):若栈存在且⾮空,⽤e返回S的栈顶元素
Push(*S,e):若栈存在,插⼊新元素e到栈S中并成为栈顶元素
Pop(*S,*e):删除栈S中栈顶元素,并⽤e返回其值
StackTraver(*S):遍历栈中所有元素
StackLength(S):返回栈S的元素个数
endADT
*/
#include
#include
#define OVERFLOW -1
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 2
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100 /*设定栈最⼤值*/
typedef int SElemType; /*SElemType类型根据实际情况⽽定,这⾥假设为int*/76年是什么年
typedef int Status;
/*当栈存在⼀个元素时,top等于0,因此通常把空栈的条件定位top等于-1*/
typedef struct
{
SElemType data[MAXSIZE];
int top;
}SqStack;
/*初始化栈*/
Status InitStack(SqStack *S)
{
S->top=-1;
return OK;
}
/*清空栈*/
Status ClearStack(SqStack *S)
{
S->top=-1;
return OK;
}
/*判断栈是否为空,-1为空*/
Status StackEmpty(SqStack *S)
送男士的鲜花
{
if(S->top==-1)
return TRUE;
el
return FALSE;
}
/*若栈⾮空,返回栈顶元素*/
Status GetTop(SqStack *S, SElemType *e) {
if(S->top==-1)return ERROR;
el *e = S->data[S->top];
return OK;
}
/*进栈,插⼊元素e为新的栈顶元素*/
{
if(S->top == MAXSIZE - 1)/*栈满*/
{
return ERROR;
}
S->top++; /*栈顶指针增加⼀*/
S->data[S->top]=e; /*将新插⼊元素赋值给栈顶空间*/
return OK;
}
/*出栈,若栈不为空,则删除s的栈顶元素,⽤e返回其值,并返回OK,否则返回ERROR*/ Status Pop(SqStack *S, SElemType *e)
{
if(S->top==-1)
return ERROR; /*栈空*/
女性晚上心悸心慌失眠
*e = S->data[S->top]; /*将要删除的栈顶元素赋值给e*/
S->top--; /*栈顶指针减⼀*/
return OK;
}
/*遍历栈中所有元素*/
Status StackTraver(SqStack *S, Status (* visit)(SElemType))
{
int n,i;
n=S->top;
for(i=n;i>=0;i--){
visit(S->data[i]);
}
printf("\n");
return OK;
焉知非福什么意思}
刘小楠/*返回栈S的元素个数*/
int StackLength(SqStack *S)
{
return S->top+1;
/*显⽰元素格式*/
Status visit(SElemType e)
{
printf("%d ",e);
return OK;卜怎么组词
}
int main()
{
SqStack s;
int e;
printf("InitStack初始化栈并将1--12压⼊栈\n");
if(InitStack(&s))
for(e = 1; e <= 12; e++)
{
Push(&s,e);
}
printf("StackTraver栈中元素从栈顶依次为:\n");
StackTraver(&s,visit);
Pop(&s,&e);
printf("Pop弹出的元素为:%d\n",e);
Pop(&s,&e);
printf("Pop⼜弹出的元素为:%d\n",e);
printf("Push将刚刚弹出的元素%d再次压⼊\n",e);
Push(&s,e);
printf("StackEmpty判断栈是否为空:%d(1:是 0:不是)\n",StackEmpty(&s));
GetTop(&s,&e);
printf("GetTop当前栈顶元素为:%d\n",e);
printf("StackLength:当前栈长度为%d \n",StackLength(&s));
ClearStack(&s);
printf("ClearStack栈清空后,StackEmpty栈是否为空%d(1:是 0:不是)\n",StackEmpty(&s)); DestroyStack(&s);
printf("DestroyStack栈销毁");
return 0;

本文发布于:2023-06-30 15:47:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1061761.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:元素   栈顶   返回   具有   清空   类型   删除   心悸
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图