• 数据结构-顺序栈


    #include <stdio.h>
    #include <stdlib.h>
    #define LIST_INIT_SIZE 10
    #define LISTINCREMENT 100
    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT 10
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define INFEASIBLE -1
    #define OVERFLOW -2
    
    typedef int Status;
    typedef int SElemType;
    
    typedef struct
    {
        SElemType *base;
        SElemType  *top;
        int stacksize;
    } SqStack;
    
    Status InitStack(SqStack *S);
    Status Push(SqStack *S, SElemType e);
    Status Pop(SqStack *S, SElemType *e);
    Status StackEmpty(SqStack S);
    void conversion ();
    
    int main()
    {
        printf("Please input a number to conver:
    ");
        conversion();
        return 0;
    }
    Status InitStack(SqStack *S)
    {
        S->base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof (SElemType));
        if (!S->base) exit (OVERFLOW);
        S->top = S->base;
        S->stacksize = STACK_INIT_SIZE;
        return OK;
    }
    
    Status Push(SqStack *S, SElemType e)
    {
        if (S->top - S->base >= S->stacksize) //栈满
        {
            S->base = (SElemType *)realloc
                   (S->base, (S->stacksize + STACKINCREMENT)
                    * sizeof(SElemType));
            if (!S->base) exit (OVERFLOW);
            S->top   = S->base + S->stacksize;
            S->stacksize += STACKINCREMENT;
        }  // if
        *S->top++ = e;
        return OK;
    }  //Push
    Status Pop(SqStack *S, SElemType *e)
    {
        if(S->top == S->base)return ERROR;
        *e = *--S->top;
        return OK;
    } //Pop
    Status StackEmpty(SqStack S)
    {
        if (S.base == S.top)
            return TRUE;
        return FALSE;
    }
    void conversion ()
    {
        SqStack S;
        int N,e;
        InitStack(&S);
        scanf ("%d",&N);
        while (N)
        {
            Push(&S, N % 8);
            N = N/8;
        }
        while (!StackEmpty(S))
        {
            Pop(&S, &e);
            printf ("%d", e);
        }
    }
    
    
    

  • 相关阅读:
    C++矢量图形库系列(转)
    ArcGIS Server 地图发布请求分析
    Git在提交代码时出现的fatal: Authentication failed的问题
    创建WPF项目
    Linux查看日志常用命令(转载)
    CentOS6 + MapServer7.4编译
    升级GCC
    QT+OpenGL(03)--libpng库的编译
    QT+OpenGL(02)-- zlib库的编译
    QT+OpenGL(01)--实现三角形渲染
  • 原文地址:https://www.cnblogs.com/chinashenkai/p/9451397.html
Copyright © 2020-2023  润新知