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\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;
    }
  • 相关阅读:
    【转】C++笔试题汇总
    【转】c++笔试题
    【M21】利用重载技术避免隐式类型转换
    【M6】区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
    【M7】千万不要重载&&,||和,操作符
    【M22】考虑以操作符复合形式(op=)取代其独身形式(op)
    String类的实现
    理解 strcpy方法
    多线程笔试
    mysql中all privileges包含哪些权限
  • 原文地址:https://www.cnblogs.com/newwy/p/1847464.html
Copyright © 2011-2022 走看看