您的位置:首页 > 其它

实现顺序栈各种基本运算的算法

2013-01-27 15:01 726 查看
/*algo3-1.cpp*/

#include<stdio.h>

#include<malloc.h>

#define MaxSize 100

typedef char ElemType;

typedef struct

{

ElemType elem[MaxSize];

int top;/*栈指针*/

}SqStack;

void InitStack(SqStack * &s)/*[初始化栈s*/

{

s=(SqStack *)malloc(sizeof(SqStack));

s->top=-1;

}

void ClearStack(SqStack * &s)/*释放栈s*/

{

free(s);

}

int StackLength(SqStack *s)/*求栈s的长度*/

{

return(s->top+1);

}

int StackEmpty(SqStack *s)/*判断栈s是否为空*/

{

return(s->top==-1);

}

int Push(SqStack * &s,ElemType e)/*进栈元素e*/

{

if(s->top==MaxSize-1)

return 0;

s->top++;

s->elem[s->top]=e;

return 1;

}

int Pop(SqStack * &s,ElemType &e)/*出栈一个元素*/

{

if(s->top==-1)

return 0;

e=s->elem[s->top];

s->top--;

return 1;

}

int GetTop(SqStack *s,ElemType &e)/*取栈顶元素*/

{

if(s->top==-1)

return 0;

e=s->elem[s->top];

return 1;

}

void DispStack(SqStack * s)/*从栈顶到栈底输出元素*/

{

int i;

for(i=s->top;i>=0;i--)

printf("%c",s->elem[i]);

printf("\n");

}

/*ex[3-1.cpp*/

#include<stdio.h>

#include<malloc.h>

#define MaxSize 100

typedef char ElemType;

typedef struct

{

ElemType elem[MaxSize];

int top;/*栈指针*/

}SqStack;

extern void InitStack(SqStack * &s);

extern void ClearStack(SqStack * &s);

extern int StackLength(SqStack *s);

extern int StackEmpty(SqStack *s);

extern int Push(SqStack * &s,ElemType e);

extern int Pop(SqStack * &s,ElemType &e);

extern int GetTop(SqStack *s,ElemType &e);

extern void DispStack(SqStack * s);

void main()

{

ElemType e;

SqStack * s;

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)栈长度:%d\n",StackLength(s));

printf("(6)从栈顶到栈底元素:");DispStack(s);

printf("(7)出栈序列:");

while(!StackEmpty(s))

{

Pop(s,e);

printf("%c",e);

}

printf("\n");

printf("(8)栈为%s\n",(StackEmpty(s)?"空":"非空"));

printf("(9)释放栈\n");

ClearStack(s);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: