zoukankan      html  css  js  c++  java
  • 链栈的相关操作

      1 /*
      2 2012年11月23日9:10:12
      3 链栈的基本操作 
      4 InitStack    初始化链栈
      5 */
      6 
      7 
      8 #include<stdio.h>
      9 #include<stdlib.h>
     10 
     11 
     12 
     13 //////////定义结构体//////////////////
     14 typedef struct Node
     15 {
     16     struct Node *pNext;
     17     int data;
     18 }NODE,*PNODE;
     19 
     20 typedef struct Stack            
     21 {
     22     PNODE pTop;                 
     23     int count;     
     24 }LinkStack,*PLinkStack;
     25 
     26 
     27 
     28 ////////////函数声明//////////////////////
     29 void InitStack(PLinkStack);
     30 void Push(int val,PLinkStack pS);
     31 void Traverse(PLinkStack pS);
     32 void Pop(PLinkStack pS);
     33 
     34 
     35 /////////////主函数///////////////////
     36 int main(void)
     37 {
     38     LinkStack S;
     39     InitStack(&S);
     40     Push(3,&S);
     41     Push(2,&S);
     42     Push(4,&S);
     43     Push(5,&S);
     44     Traverse(&S);
     45     Pop(&S);
     46     Traverse(&S);
     47     return 0;
     48 }
     49 
     50 
     51 
     52 ///////////初始化链栈//////////////////
     53 void InitStack(PLinkStack pS)
     54 {
     55     
     56     pS->pTop = (PNODE)malloc(sizeof(NODE));
     57     if(NULL == pS->pTop)
     58     {
     59         printf("分配内存失败\n");
     60         exit(-1);
     61     }
     62     else
     63     {
     64         pS->pTop->pNext = NULL;
     65         pS->count = 0;
     66     }
     67 }
     68 
     69 
     70 
     71 ////////////入栈///////////////
     72 void Push(int val,PLinkStack pS)
     73 {
     74     PNODE pNew;
     75     pNew = (PNODE)malloc(sizeof(NODE));
     76     if(NULL == pNew)
     77     {
     78         printf("分配内存失败\n");
     79         exit(-1);
     80     }
     81     else 
     82     {
     83         pNew->data= val;
     84         pNew->pNext = pS->pTop;
     85         pS->pTop = pNew;
     86         pS->count++;
     87     }
     88 }
     89 
     90 
     91 ///////////遍历输出////////////////
     92 void Traverse(PLinkStack pS)
     93 {
     94     PNODE pTemp = pS->pTop;
     95     if(NULL == pTemp->pNext)
     96     {
     97         printf("空栈!\n");
     98     }
     99     else
    100     {
    101         while(NULL!=pTemp->pNext)
    102         {
    103             printf("%d\n",pTemp->data);
    104             pTemp = pTemp->pNext;
    105         }
    106     }
    107     return;
    108 }
    109 
    110 
    111 ////////////出栈////////////////////
    112 void Pop(PLinkStack pS)
    113 {
    114     PNODE pTemp = pS->pTop;
    115     if(NULL == pTemp->pNext)
    116     {
    117         printf("空栈!\n");
    118     }
    119     else
    120     {
    121         printf("出栈元素为%d\n",pTemp->data);
    122         pS->pTop = pS->pTop->pNext;
    123         free(pTemp);
    124         pS->count--;
    125         
    126     }
    127     
    128     
    129 }
  • 相关阅读:
    LNOI2014LCA(树链剖分+离线操作+前缀和)
    CDQ分治与整体二分学习笔记
    BJWC2018上学路线
    NOIP2013火柴排队
    SHOI2008仙人掌图(tarjan+dp)
    作诗(分块)
    COGS314. [NOI2004] 郁闷的出纳员
    bzoj 1691: [Usaco2007 Dec]挑剔的美食家
    COGS1533.[HNOI2002]营业额统计
    bzoj1208: [HNOI2004]宠物收养所
  • 原文地址:https://www.cnblogs.com/MuyouSome/p/2839368.html
Copyright © 2011-2022 走看看