您的位置:首页 > 其它

13数组实现顺序堆栈的基本操作

2013-04-21 22:34 323 查看
运行如下所示:



/*018数组实现顺序堆栈的基本操作*/

#include <stdio.h>

#define MaxStackSize 100

typedef int DataType;
typedef struct

{

DataType stack[MaxStackSize];

int top;

}SeqStack;
/*初始化顺序堆栈S*/

void StackInitiate(SeqStack *S)

{

S->top = 0;

}
/*判断堆栈S非空否,非空返回1,否则返回0*/

int StackNotEmpty(SeqStack *S)

{

if(S->top <= 0)

return 0;

else

return 1;

}
/*把数据元素值x存入顺序堆栈S中,入栈成功则返回1,否则返回0*/

int StackPush(SeqStack *S , DataType x)

{

if(S->top >= MaxStackSize)

{

printf("堆栈已满无法插入!\n");

return 0;

}

else

{

S->stack[S->top] = x;

S->top++;

return 1;

}

}
/*取出顺序堆栈S的栈顶数据元素值由参数d带回,出栈成功则返回1,否则返回0*/

int StackPop(SeqStack *S , DataType *d)

{

if(S->top <= 0)

{

printf("堆栈已空无数据元素出栈!\n");

return 0;

}

else

{

S->top--;

*d = S->stack[S->top];

return 1;

}

}
/*取顺序堆栈S的当前栈顶数据元素值由参数d带回,成功则返回1,否则返回0*/

int StackTop(SeqStack *S , DataType *d)

{

if(S->top <= 0)

{

printf("堆栈已空!\n");

return 0;

}

else

{

*d = S->stack[S->top - 1];

return 1;

}

}
void main(void)

{

SeqStack myStack;

int i , x;
StackInitiate(&myStack); /*初始化*/

for(i = 0 ; i< 10 ; i++)

StackPush(&myStack , i + 1); /*入栈*/
StackTop(&myStack , &x); /*取栈顶元素*/

printf("当前栈顶数据元素为: %d\n" , x);
printf("依次出栈的数据元素序列如下: \n");

while(StackNotEmpty(&myStack))

{

StackPop(&myStack , &x); /*出栈*/

printf("%d " , x);

}

printf("\n");

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