zoukankan      html  css  js  c++  java
  • 链栈

    链栈

      1 #include<stdio.h>
      2 #include<malloc.h>
      3 #include<stdlib.h>
      4 
      5 typedef struct Node
      6 {
      7     int data;
      8     struct Node * pNext;
      9 }NODE, *PNODE;
     10 
     11 typedef struct Stack
     12 {
     13     PNODE pTop;   //top指针
     14     PNODE pBottom;    //bottom指针
     15 }STACK, *PSTACK;
     16 
     17 void init(PSTACK);
     18 void push(PSTACK,int);
     19 void traverse(PSTACK);
     20 bool is_empty(PSTACK);
     21 bool pop(PSTACK,int*);
     22 void clear(PSTACK);
     23 
     24 int main()
     25 {
     26     STACK S;  //STACK 等价于struct Stack
     27     int val;
     28 
     29     init(&S);   //目的是造出一个空栈
     30     printf("入栈元素是");
     31     push(&S,1);   //压栈
     32     push(&S,2);
     33     push(&S,3);
     34     push(&S,4);
     35     push(&S,5);
     36     traverse(&S);  //遍历输出
     37 
     38     if( pop(&S,&val) )
     39     {
     40         printf("出栈成功,出栈的元素是%d ",val);
     41     }
     42     else
     43     {
     44         printf("出栈失败!
    ");
     45     }
     46     traverse(&S);  //遍历输出
     47 
     48     clear(&S);
     49     traverse(&S);  
     50     return 0;
     51 }
     52 
     53 void init(PSTACK pS)
     54 {
     55     pS->pTop = (PNODE)malloc(sizeof(NODE));
     56     if(NULL == pS->pTop)
     57     {
     58         printf("动态内存分配失败");
     59         exit(-1);
     60     }
     61     else
     62     {
     63         pS->pBottom = pS->pTop;
     64         pS->pTop->pNext = NULL;  //pS->Bottom->pNext = NULL;
     65     }
     66 }
     67 
     68 void push(PSTACK pS,int val)
     69 {
     70     PNODE pNew = (PNODE)malloc(sizeof(NODE));
     71 
     72     pNew->data = val;
     73     pNew->pNext = pS->pTop;  //pS->ptop能改成pS->pBottom
     74     pS->pTop = pNew;
     75     return;
     76 }
     77 
     78 void traverse(PSTACK pS)
     79 {
     80     PNODE p = pS->pTop;
     81 
     82     while(p != pS->pBottom)
     83     {
     84         printf("%d ",p->data);
     85         p = p->pNext;
     86     }
     87     printf("
    ");
     88     return;
     89 }
     90 
     91 bool is_empty(PSTACK pS)
     92 {
     93     if(pS->pTop == pS->pBottom)
     94         return true;
     95     else
     96         return false;
     97 }
     98 
     99 bool pop(PSTACK pS,int *pVal)
    100 {
    101     if( is_empty(pS) )
    102     {
    103         return false;
    104     }
    105     else
    106     {
    107         PNODE r = pS->pTop;
    108         *pVal = r->data;
    109         pS->pTop = r->pNext;
    110         free(r);
    111         r = NULL;
    112         return true;
    113     }
    114 }
    115 
    116 void clear(PSTACK pS)
    117 {
    118     if( is_empty(pS) )
    119     {
    120         return;
    121     }
    122     else
    123     {
    124         PNODE p = pS->pTop;
    125         PNODE q = NULL;
    126 
    127         while(p != pS->pBottom)
    128         {
    129             q = p->pNext;
    130             free(p);
    131             p = q;
    132         }
    133         pS->pTop = pS->pBottom;
    134     }
    135     return;
    136 }
  • 相关阅读:
    JS动态插入HTML后不能执行后续JQUERY操作
    小程序踩坑+进深
    小程序常用API介绍
    关于小程序你需要知道的事
    小程序app is not defined
    Apache 配置:是否显示文件列表
    小程序分享如何自定义封面?
    微信小程序 的文字复制功能如何实现?
    php-fpm参数优化【转】
    nginx 报错 upstream timed out (110: Connection timed out)解决方案【转】
  • 原文地址:https://www.cnblogs.com/aipeicai/p/12208888.html
Copyright © 2011-2022 走看看