首页 » Program » C/C++ » 正文

Sequential stack

栈(stack)是先进后出的一种数据结构,要注意栈顶指针的移动,而且只能在栈顶进行操作。

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    char stack[10];         //利用数组模拟栈
    int top;               //栈顶指针
} qstype;

//初始化
void init(qstype *s)
{
    s->top=-1;
}

//入栈
int push(qstype *s,int x)
{
    if (s->top>=9)   //0~9 10个元素
        {
            return 0;
        }
    else
        {
            s->top++;               //下标要从0开始
            s->stack[s->top] = x;
            return 1;
        }
}

void main()
{
    int ch,sign;
    qstype *s;
    s = (qstype *)malloc(sizeof(qstype));
    init(s);
    printf("顺序栈建立成功\n");
    printf("请输入数据并以-1结束\n");
    scanf("%d",&ch);
    while (ch!=-1)
        {
            if ((sign=push(s,ch))==0)
                {
                    printf("数据溢出\n");
                    break;
                }
            else
                {
                    scanf("%d",&ch);
                }
        }

    printf("输出栈中元素\n");       //倒序输出(后进先出)
    while (s->top!=-1)           //top最大是9
        {
            s->top--;
            printf("%d ",s->stack[s->top+1]);
        }
    printf("\n");
}

赞 (0)

Comment