数据结构栈和队列作业

来源:互联网 发布:无光源网络是什么意思 编辑:程序博客网 时间:2024/06/17 12:58
#include <stdio.h>

typedef int StackElementType;

#define Stack_Size 50      /*设栈中元素个数为50*/


typedef struct
{
    StackElementType elem[Stack_Size];    /*用来存放栈中元素的一维数组*/
    int  top;     /*用来存放栈顶元素的下标,top为-1表示空栈*/
}SeqStack;



//初始化顺序栈
void InitStack(SeqStack * S)

{

    /*构造一个空栈S*/

    S->top=-1;

    printf("初始化成功!\n");
}


int SeqStackFull(SeqStack * S)
{


    if(S->top>Stack_Size)
        return 1;
    else
        return 0;

}


//顺序栈进栈运算
int Push(SeqStack * S,StackElementType x)

{   

    /*将x置入S栈新栈顶*/

    if(S->top==Stack_Size-1)
    {
        printf("栈已满 进栈失败!\n");     /*表示栈已满*/
        return -1;
    }
    S->top++; /*修改栈顶指针*/
    S->elem[S->top] = x; /*x进栈*/
    printf("进栈成功!\n");
    return 0;
}


//顺序栈出栈运算
int Pop(SeqStack * S,StackElementType * x)

{   

    /*将S栈顶元素弹出,放到x所指的存储空间中带出*/

    if(S->top==-1)
    {
       printf("SeqStack is Empty\n");        /*表示栈为空*/

       return -1;

    else

    {
    *x= S->elem[S->top]; /*栈顶元素赋给x*/
    S->top--; /*修改栈顶指针*/

    return 0;

    }

}



//顺序表读栈顶元素运算
int  GetTop(SeqStack * S,StackElementType * x)

{

     /*将栈顶元素读出,放到x所指的存储空间中,栈顶指针保持不变*/

    if(S->top==-1)

    {

        printf("SeqStack is Empty\n");    /*表示栈为空*/

        return -1 ;

    }

    else

    {
       *x = S->elem[S->top]; /*将栈顶元素赋给x*/

       return 0;

    }

}


int main()
{
    SeqStack m;
    StackElementType n;
    StackElementType k;
    InitStack(&m);
    Push(&m,&n);
    printf("%d\n",GetTop(&m));/*读栈顶元素*/
    Pop(&m,&k);
    printf("%d\n",GetTop(&m));
}

原创粉丝点击