• 链栈的初始化,建立,插入,查找,删除。


    --

    代码
    
    ////////////////////////////////////////////
    //链栈的初始化,建立,插入,查找,删除。  //
    //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;
    }

    --

  • 相关阅读:
    centos下tomcat自启动
    navcat12 windows 下载安装
    mysql8 windows 下载安装
    redis windows下载安装
    python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出
    Python的安装图解
    spark入门系列教程二——简单入门实例
    Spark入门系列教程一 —— Spark2.3.1 集群安装
    css在文字两边加线,文字居中效果——实战应用
    a标签中对于邮箱和电话的用法mark
  • 原文地址:https://www.cnblogs.com/Ph-one/p/6889845.html
Copyright © 2020-2023  润新知