顺序栈

来源:互联网 发布:ubuntu wget类似 编辑:程序博客网 时间:2024/04/28 13:05
/*============================================================================ Name        : Exercise.cpp Author      : Haier Version     : 1.01 Copyright   : Copyright (c) 2014 Description : HeapAdjust in C, Ansi-style, Compile by Code:Block ============================================================================*/#include <stdio.h>#include <stdlib.h>#define STACKSIZE (30)typedef struct Stack{    int Top;    int Data[STACKSIZE];}Stack;/**************************************************************************** * Function     : InitStack * Description  : Initialize Stack * Input        : Stack Pointer * Return       : Void *****************************************************************************/void InitStack(Stack* MyStack){    MyStack->Top=-1;}/**************************************************************************** * Function     : DestoryStack * Description  : Destory Stack * Input        : Stack Pointer * Return       : Void *****************************************************************************/void DestoryStack(Stack* MyStack){    MyStack->Top=-1;}/**************************************************************************** * Function     : Push * Description  : Push Stack * Input        : Stack Pointer,Member to Push* Return       : Success:1,Fail:0 *****************************************************************************/int Push(Stack *MyStack,int Member){    if(MyStack->Top==STACKSIZE)    {        printf("Have no space.\n");        return 0;    }    MyStack->Data[++MyStack->Top]=Member;    return 1;}/**************************************************************************** * Function     : Pop * Description  : Pop Stack * Input        : Stack Pointer,Member to Pop* Return       : Success:1,Fail:0 *****************************************************************************/int Pop(Stack* MyStack){    int Member;    if(MyStack->Top==-1)    {        printf("Empty Stack !\n");        return 0;    }    printf("%d\n",Member=MyStack->Data[MyStack->Top--]);    return 1;}/**************************************************************************** * Function     : GetTop * Description  : Get Top Of Stack * Input        : Stack Pointer* Return       : The Member Of Top Of Stack*****************************************************************************/int GetTop(Stack* MyStack){    return (MyStack->Data[MyStack->Top]);}/**************************************************************************** * Function     : GetNumberOfElementsOfStack * Description  : Get Number Of Elements Of Stack  * Input        : Stack Pointer* Return       : The Nember Of Current Stack*****************************************************************************/int GetNumberOfElementsOfStack(Stack* MyStack){    return (MyStack->Top);}/**************************************************************************** * Function     : IsEmptyStack * Description  : Judge The Stack is Empty or Not* Input        : Stack Pointer,Member to Pop* Return       : IsEmpthStack:1,NotIsEmpthStack:0 *****************************************************************************/int IsEmptyStack(Stack* MyStack){    if(MyStack->Top==-1)    {        return 1;    }    return 0;}int main(){    Stack MyStack;    int i;    InitStack(&MyStack);    printf("Test for Push: \n");    for(i=0; i<STACKSIZE; i++)    {        if(Push(&MyStack,i))        {            printf("%d,",MyStack.Data[MyStack.Top]);        }    }    printf("\nTest for Pop: ");    Pop(&MyStack);    printf("\nTest for GetTop: ");    printf("%d\n",GetTop(&MyStack));    printf("\nTest for GetNumberOfElementsOfStack: ");    printf("%d\n",GetNumberOfElementsOfStack(&MyStack));    printf("\nTest for IsEmptyStack: ");    printf("%d\n",IsEmptyStack(&MyStack));    printf("\nTest for DestoryStack: ");    DestoryStack(&MyStack);    printf("%d\n",IsEmptyStack(&MyStack));}

0 0
原创粉丝点击