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


    代码
    ////////////////////////////////////////////
    //链栈的初始化,建立,插入,查找,删除。 //
    //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\n");
    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!\n");
    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;
    }
  • 相关阅读:
    UINavigationBar 调整
    UILabel根据内容自动调整高度
    [iOS开发]文档导读
    [iOS开发]NSUserDefaults使用注意
    Xcode 断点的使用
    [iOS开发] UIKit Dynamics
    [iOS开发]ShareSDK
    objective-c GCD
    面向对象设计原则
    Go语言学习教程:go语言的包管理
  • 原文地址:https://www.cnblogs.com/newwy/p/1847464.html
Copyright © 2020-2023  润新知