zoukankan      html  css  js  c++  java
  • 链栈的初始化,建立,插入,查找,删除。

    --

    代码
    
    ////////////////////////////////////////////
    //链栈的初始化,建立,插入,查找,删除。  //
    //Author:Wang Yong                            //    
    //Date:    2010.8.19                            //
    ////////////////////////////////////////////
    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int ElemType;
    
    ///////////////////////////////////////////
    
    //定义链栈的结构类型
    
    typedef struct StackNode 
    {
        ElemType data;                //栈的数据 
        struct StackNode *next;        //指针域 
    } StackNode,*LinkStack;
    
    //////////////////////////////////////////
    
    //链栈的初始化
    
    LinkStack LinkStackInit()
    {
        LinkStack top;                    //构造一个空栈 
        top = (StackNode *)malloc(sizeof(StackNode));
        if(!top)
            printf("OVERFLOW
    ");
        top = NULL;
        return top; 
    }
    
    /////////////////////////////////////////
    
    //判断栈空的算法
    
    int LinkStackEmpty(LinkStack top)
    {
        if(!top)
            return 1;
        else 
            return 0;
    }
    
    ////////////////////////////////////////
    
    //进栈的算法
    
    LinkStack LinkStackPush(LinkStack top,ElemType x)
    {
        LinkStack p;
        p = (StackNode *)malloc(sizeof(StackNode));    //创建一个结点 
        p->data = x;                                //设置结点的数据域 
        p->next = top;                                 //设置结点的指针域
        top = p;                                    //设置新的栈顶 
        return top;
    }
    
    ////////////////////////////////////////
    
    //出栈的算法
    
    ElemType LinkStackPop(LinkStack &top)//出栈的时候必须判断是否栈空 
    {
        LinkStack p;
        ElemType x;
            
        if(top != NULL)
        {
            x = top->data;                        //取栈顶元素 
            p = top;                            //将栈顶结点重置 
            top = top->next;
            free(p);                            //释放原栈顶结点空间 
        }
        else
            printf("stack empty!
    ");
        return  x;
    } 
    int main()
    {
        LinkStack lstack;
        lstack = LinkStackInit();
        ElemType x;
        printf("请输入进栈的元素:");
        while(scanf("%d",&x) != EOF)
        {
            lstack = LinkStackPush(lstack,x); 
        }
        LinkStack p;
        for(p = lstack;p != NULL; p = p->next)
            printf("%d ",p->data);
        printf("出栈的结果为:");
        while(lstack != NULL)
            printf("%d ",LinkStackPop(lstack));
        return 0;
    }

    --

  • 相关阅读:
    一、vue常用指令
    win10安装和配置node
    win10安装和配置java8
    二、vue-cli4.5脚手架创建vue项目
    配置分布式事务实例:springcloud-Hoxton.SR1+springboot2.2.2+nacos1.3.2+seata1.2.0
    centos7安装frps_0.31.1
    centos7安装nginx1.18.0
    docker安装nexus3
    centos7防火墙的配置
    centos7使用Apache实现HTTP访问SVN资源库
  • 原文地址:https://www.cnblogs.com/Ph-one/p/6889845.html
Copyright © 2011-2022 走看看