链栈2

原创 2015年11月19日 17:30:13
#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;
    }
}
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);





    return 0;
}

链栈实现10进制转换2进制

  • lzgyou
  • lzgyou
  • 2009年10月11日 18:36
  • 1672

栈操作之栈链

数据结构: 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一...
  • u014492609
  • u014492609
  • 2014年09月26日 16:39
  • 1490

链栈基本操作

栈基本概念: 栈(stack)是限定在表尾进行插入和删除操作的线性表(或单链表)。 //只能在一段进行插入和删除,因此不存在,在中间进行插入 栈顶(top):允许插入和删除的一端。而另一端称为栈...
  • jwentao01
  • jwentao01
  • 2015年07月05日 20:43
  • 7831

C语言 实现链栈

#include using namespace std;typedef int DataType; typedef struct stStack { DataType data; ...
  • u010889616
  • u010889616
  • 2015年08月03日 15:53
  • 2794

C++栈学习——顺序栈和链栈的区别

C++中栈有顺序栈和链栈之分,在顺序栈中,定义了栈的栈底指针(存储空间首地址base)、栈顶指针top以及顺序存储空间的大小stacksize(个人感觉这个数据成员是可以不用定义的) //顺序栈数据结...
  • handsomewangjg
  • handsomewangjg
  • 2015年08月24日 22:57
  • 2723

链栈的定义、初始化、出栈、入栈等操作

#include using namespace std;  /*链栈的定义*/typedef struct sNode{       char data;       struct sNode * ...
  • hackerain
  • hackerain
  • 2010年10月09日 20:37
  • 8054

链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁

#include using namespace std; typedef struct node { int data; struct node*next; }Node, *stack; //...
  • qq_18343569
  • qq_18343569
  • 2015年08月29日 21:44
  • 1157

链栈与链表间的关系

链栈与链表区别与联系
  • qwas12345qwas
  • qwas12345qwas
  • 2017年03月07日 14:29
  • 396

链栈结构及操作

#include #include  typedef struct node //定义链栈的节点类型;{ int data; struct node *next;}linknode;typedef s...
  • weiyouyin
  • weiyouyin
  • 2007年06月25日 11:21
  • 501

链栈之C++实现

链栈是借用单链表实现的栈。其不同于顺序栈之处在于: 1、链栈的空间是程序运行期间根据需要动态分配的,机器内存是它的上限。而顺序栈则是 静态分配内存的。 2、链栈动态分配内存的特性使得它一般无需考虑栈溢...
  • Lulipeng_cpp
  • Lulipeng_cpp
  • 2013年08月30日 20:58
  • 6506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链栈2
举报原因:
原因补充:

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