栈--最终版

原创 2015年11月19日 21:42:30
#include <stdio.h>
#include <Stdlib.h>
typedef struct node
{
    int data;
    struct node *pNext;
}NODE,*PNODE;
typedef struct Stack
{
    PNODE pTop;
    PNODE pBottom;
}STACK,* PSTACK;
void init(PSTACK pS)
{
    pS->pTop=(PNODE)malloc(sizeof(NODE));
    if(!pS->pTop)
        exit(0);
    pS->pBottom=pS->pTop;
    pS->pTop->pNext=NULL;
}
void push(PSTACK pS,int val)
{
    PNODE pNew=(PNODE)malloc(sizeof(NODE));
    pNew->data=val;
    pNew->pNext=pS->pTop;
    pS->pTop=pNew;
}
void traverse(PSTACK pS)
{
    PNODE p=pS->pTop;
    while(p!=pS->pBottom)
    {
        printf("%d ",p->data);
        p = p->pNext;

    }
    printf("\n");
}
int empty(PSTACK pS)
{
    if (pS->pTop==pS->pBottom)
    {
        return 0;
    }
    else
        return 1;
}
int pop(PSTACK pS,int * pVal)
{
    if(empty(pS)==0)
        return 0;
    else
    {// return true;

        PNODE r  =pS->pTop;
        *pVal = r->data;
        pS->pTop=r->pNext;
        free(r);
        r=NULL;
        return 1;
    }
}
void Clear(PSTACK pS)
{
    if(empty(pS)==0)
        return;
    PNODE p = pS->pTop;
    PNODE q = NULL;
    while(p != pS->pBottom)
    {
        q = p->pNext;
        free(p);
        p = q;
    }
    pS->pTop = pS->pBottom;
}
int main()
{
    STACK S;
    int val;
    init(&S);
    push(&S,1);
    push(&S,2);
    push(&S,23);
    push(&S,43);
    push(&S,9);
    pop(&S,&val);
    traverse(&S);
    if (pop(&S,&val)==1)
    {
        /* code */
        printf("success! %d\n",val);
    }
    else
        printf("FAil\n");
    traverse(&S);
    Clear(&S);
    traverse(&S);





    return 0;
}

相关文章推荐

iOS在原生项目中插入React Native(最终版)

iOS原生项目中插入react native的教程

【龙年献礼】POJOGenerator(POJO代码生成器 v1.3.3)最终版(以后不再更新)

POJOGenerator(POJO代码生成器 v1.3.3) 本POJO代码生成器采用Java的Swing技术编码实现,是绿色免费工具,可以自由传播。 由于本工具的内部实现较烂,所以还请反编译高手手...

从Unity引擎过度到Unreal4引擎(最终版)

F:http://www.unrealchina.org/portal.php?mod=view&aid=72 摘要 : 从Unity引擎过度到Unreal4引擎(最终版) 前言 寒假回家到现...

Linux下安装php,并配置到nginx【最终版,完美解决问题】

1、 下载         libxml2-2.6.32.tar.gz  http://download.csdn.net/detail/netlong339/1351852 php-5.3.16.t...
  • xb12369
  • xb12369
  • 2015年12月06日 21:13
  • 1517

采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)

ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心...
  • csd1208
  • csd1208
  • 2013年05月29日 14:18
  • 615

修改和制作Android开机Logo(最终版)

以下在Telechips tcc8900上,用Android 2.3的源码编译通过 1.bootloader图片修改      bootable\bootloader\lk\platform\...

游戏盒子接球最终版

有几个小地方做了改进,倒计时调用系统函数GetTickCount()来进行计算的,更加方便,其他还有一些地方做出了优化,大家可以自己对比了看一下。这里还要感谢杨伟大哥提出的宝贵建议。 代码如下: ...

无向图的深度优先搜索(最终版)

【实验内容】 设无向图G有n个点e条边,写意算法建立G的邻接多表,并按照深度优先搜索输出顶点,要求该算法时间复杂性为O(n+e),且除邻接多表本身所占空间之外只用O(1)辅助空间。 【参考方法】 ...

如何解决java.lang.NoClassDefFoundError错误(最终版)

转载自参见:http://blog.csdn.net/jamesjxin/article/details/46606307. 在日常Java开发中,我们经常碰到java.lang.NoClassDe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:栈--最终版
举报原因:
原因补充:

(最多只允许输入30个字)