zoukankan      html  css  js  c++  java
  • 数据结构C语言实现----入栈操作

    1.栈顶是没有元素的,栈顶是一个空值

    2.把一个元素压进栈时,不要给栈顶的地址赋值,而是赋值给指针

        例如:你在结构体中定义了 char *top;

          那么你要把元素date赋值给*top,而不是top

          赋值完成后,top++,因为栈顶没有值

    代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct 
    {
        char *base;
        char *top;
        int stacksize;
    } sqStack;
    
    //////////////////////////////
    //创建一个栈
    #define SATCK_INIT_SIZE 100
    void initstack(sqStack *stack)
    {
        stack->base = (char*)malloc( SATCK_INIT_SIZE * sizeof(char));
        if (!stack->base)
        {
            exit(0);
        }
        stack->top = stack->base;
        stack->stacksize = SATCK_INIT_SIZE;
    }
    /////////////////////////////
    //入栈操作
    #define STACK 10
    void Push(sqStack *stack , char c)
    {
        if (stack->top - stack->base > stack->stacksize)
        {//空间不足,追加空间
            stack->base = (char*)realloc(stack->base , (STACK + stack->stacksize) * sizeof(char));//用realloc函数在原内容不变的基础上追加空间
            if (!stack->base)
            {
                exit(0);
            }
            stack->top = stack->base + stack->stacksize;
            stack->stacksize = stack->stacksize + STACK;
        }
        *(stack->top) = c;//stack->top是一个地址,而*(stack->top)是一个char类型的变量
        stack->top++;//地址加一
    }
    int main()
    {
        sqStack stack;
        initstack(&stack);//创建一个栈
        printf("请输入要压入栈的字符:");
        char c;
        scanf("%c",&c);
        Push(&stack,c);
        printf("打印栈中元素:%c" , *--(stack.top));
        return 0;
    }
    

      

    运行结果:

  • 相关阅读:
    值类型引用类型的区别(转)
    聚集索引和非聚集索引(转)
    使用docker安装nginx并配置端口转发
    jenkins选择分支构建
    创建好docker后不能apt-get update解决方法
    Docker开启Remote API 访问 2375端口
    Docker加速配置
    Docker下载安装
    进入Docker 容器 docker exec [CONTAINER ID] bin/bash报错问题
    定时删除日志文件---linux定时清理日志
  • 原文地址:https://www.cnblogs.com/jerryleesir/p/13323418.html
Copyright © 2011-2022 走看看