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;
    }
    

      

    运行结果:

  • 相关阅读:
    jquery左右滑动效果的实现
    解决IE6不支持position:fixed的bug
    简单的漂浮层
    CSS Image Sprite--网页图片应用处理方式
    浮动层-JS兼容IE6
    js搜索框输入提示(高效-ys8)
    fiddler抓包(移动端APP端)
    python系统介绍
    “多走的弯路”
    接口测试实例(jmeter)
  • 原文地址:https://www.cnblogs.com/jerryleesir/p/13323418.html
Copyright © 2011-2022 走看看