C语言编程实现顺序栈的初始化,入栈,出栈,取栈顶元素,显示操作

 我来答
cdyzxy
2015-10-10 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3630万
展开全部

#define STACKSIZE 100
int mstack[STACKSIZE],top,bottom;
void mInitStack() { top=bottom=0; }
void mPush(int x) { if ( top-bottom<=STACKSIZE ) { mstack[top]=x; top++; } }
int mPop() { int r=0; if ( top>bottom ) { r=mstack[top]; top--; } return r; }
void mShowStack() { int i; printf("["); for ( i=bottom;i<top;i++ ) printf("%d ",mstack[i]); printf("]\n"); }
void main()
{
    int i,n,x,loop=1,s;
    char buffer[80];
    mInitStack();
    scanf("%d",&n); for ( i=0;i<n;i++ ) { scanf("%d",&x); mPush(x); }
    mShowStack();
    while ( loop )
    { buffer[1]=0; gets(buffer); s=1;
        switch ( buffer[1] )
        { case 'O':
            case 'o': x=mPop(); break;
            case 'U':
            case 'u': x=atoi(buffer+5); mPush(x); break;
            case 'n':
            case 'N': loop=0; break;
            default: s=0; break;
        }
        mShowStack();
    }
    mShowStack();

}

在昭显庙写歌的北冥雪
2017-09-23 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:60%
帮助的人:24.6万
展开全部
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
typedef struct __Stack
{
    int *data;
    int pos;
}Stack;

int Stack_Initial(Stack *stack)
{
    stack->data = (int*) malloc(sizeof(int));
    if(stack->data == NULL) return 0;
    stack->pos = -1;
}

int Stack_Push(Stack *stack,int value)
{
    if(stack->pos == (SIZE-1) ) 
    {
        printf("栈已满\n");
        return 0;
     }
     stack->pos++;
     stack->data[stack->pos] = value;
     return 1;
}

int Stack_Pop(Stack *stack)
{
    if(stack->pos == -1) return 0;
    stack->pos--;
    return 1;
}

int Stack_GetTop(Stack *stack)
{
    if(stack->pos == -1)
    {
        printf("栈为空\n");
        return 0;
    }
    return stack->data[stack->pos];
}

void Stack_Show(Stack *stack)
{
    if(stack->pos == -1)
    {
        printf("栈为空\n");
        return;
    }
    for(int i = 0; i <= stack->pos;i++)
    {
        printf("%10d",stack->data[i]);
    }
}

void Stack_Destroy(Stack *stack)
{
    free(stack->data);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式