zoukankan      html  css  js  c++  java
  • 数据结构-----栈

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 typedef struct Node
      5 {
      6     int data;
      7     struct Node * pNext;
      8 }NODE,*PNODE;
      9 
     10 typedef struct Stack
     11 {
     12     PNODE pTop;
     13     PNODE pBottom;
     14 }STACK,*PSTACK ;
     15 
     16 void init(PSTACK pS);
     17 
     18 bool push(PSTACK , int);
     19 void traverse(PSTACK );
     20 bool pop(PSTACK,int*);
     21 void clear(PSTACK);
     22 
     23 void init(PSTACK pS)
     24 {
     25     PNODE p = (PNODE)malloc(sizeof(NODE));
     26     if(p ==NULL)
     27     {
     28         printf("申请动态内存失败!
    ");
     29         exit(-1);
     30     }
     31     p->pNext = NULL;
     32     pS->pBottom = p;
     33     pS->pTop = p;
     34 
     35 }
     36 bool push(PSTACK pS , int val)
     37 {
     38     PNODE p = (PNODE)malloc(sizeof(NODE));
     39     if(NULL==p)
     40     {
     41         printf("申请动态内存失败!
    ");
     42         exit(-1);
     43     }
     44     p->data = val;
     45     p->pNext = pS->pTop;
     46     pS->pTop = p;
     47     return true;
     48 }
     49 bool pop(PSTACK pS,int* val)
     50 {
     51     if(pS->pTop == pS->pBottom)
     52         return false;
     53     PNODE p = pS->pTop;
     54     *val = p->data;
     55     pS->pTop = p->pNext;
     56     free(p);
     57     p =NULL;
     58     return true;
     59 }
     60 
     61 void clear(PSTACK pS)
     62 {
     63     while(pS->pTop != pS->pBottom)
     64     {
     65         pop(pS);
     66     }
     67     return;
     68 
     69 }
     70 
     71 void traverse(PSTACK pS)
     72 {
     73     PNODE  p = pS->pTop;
     74     while(p->pNext !=NULL)
     75     {
     76         printf("%d
    ",p->data);
     77         p = p->pNext;
     78     }
     79     return;
     80 }
     81 
     82 int main(void)
     83 {
     84     STACK S;
     85     int val;
     86 
     87     init(&S);//目的是造出一个空栈
     88     push(&S,1);//压栈
     89     push(&S,2);
     90     push(&S,3);
     91     push(&S,4);
     92     push(&S,5);
     93     push(&S,6);
     94     traverse(&S);
     95 
     96     pop(&S,&val);
     97     traverse(&S);
     98     clear(&S);
     99     traverse(&S);
    100 
    101     return 0;
    102 }
  • 相关阅读:
    SSL certificate verify failed” using pip to install packages
    Getting The following errors when installing boto3
    D3 Scale functions
    Making a simple scatter plot with d3.js
    Basic scatterplot in d3.js
    D3 Tick Format
    CentOS定时备份mysql数据库和清理过期备份文件
    linux yum清除var目录下缓存的方法
    正则表达式纯数字校验
    每天一个Linux命令--查看当前登陆用户并强制退出
  • 原文地址:https://www.cnblogs.com/yuejian/p/12404567.html
Copyright © 2011-2022 走看看