首页 > 学院 > 开发设计 > 正文

栈之顺序栈基本操作

2019-11-14 08:55:48
字体:
来源:转载
供稿:网友
#include <stdio.h>#include <malloc.h>#define MaxSize 100//顺序栈的存储结构typedef char ElemType;typedef struct{	ElemType data[MaxSize];	int top;					//栈顶指针} SqStack;//初始化栈void InitStack(SqStack *&s){    s=(SqStack *)malloc(sizeof(SqStack));    s->top=-1;//栈顶指针置为-1}//销毁栈void DestroyStack(SqStack *&s){    free(s);}//判断栈是够为空int  StackEmpty(SqStack *s){    return (s->top==-1);}//进栈bool Push(SqStack *&s,ElemType e){    if(s->top==MaxSize-1)//判断栈是否栈满防止溢出        return false;    s->top++;//栈顶指针增加一    s->data[s->top]=e;    return true;}//出栈bool Pop(SqStack *&s,ElemType &e){    if(s->top==-1)//栈为空的情况,即栈下溢出        return false;    e=s->data[s->top];    s->top--;    return true;}//取栈顶元素bool GetTop(SqStack *s,ElemType &e){    if(s->top==-1)//栈为空的情况,即栈下溢出        return false;    e=s->data[s->top];    return true;}int main(){	ElemType e;	SqStack *s;	PRintf("栈s的基本运算如下:/n");	printf("  (1)初始化栈s/n");	InitStack(s);	printf("  (2)栈为%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (3)依次进栈元素a,b,c,d,e/n");	Push(s,'a');	Push(s,'b');	Push(s,'c');	Push(s,'d');	Push(s,'e');	printf("  (4)栈为%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (5)出栈序列:");	while (!StackEmpty(s))	{		Pop(s,e);		printf("%c ",e);	}	printf("/n");	printf("  (6)栈为%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (7)释放栈/n");	DestroyStack(s);    return 0;}

运行结果:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表