• 链式堆栈【数据结构-朱战立】


      1 //这是一个链式堆栈的判空、压栈、出栈、取栈顶等操作
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 #include <malloc.h>
      5 
      6 
      7 #define MaxSize 100
      8 typedef int bool;
      9 #define T 1
     10 #define F 0
     11 
     12 typedef int DataType;
     13 typedef struct stack{
     14     DataType data;
     15     struct stack *next;
     16 }ListStack;
     17 
     18 //堆栈初始化
     19 
     20 void ListStackInit(ListStack **stack)  //输出型  2018年8月16日 14:35:35  更正
     21 {
     22     if (((*stack)=(ListStack*)malloc(sizeof(ListStack)))==NULL)
     23     {
     24         exit(1);
     25     }
     26     (*stack)->next = NULL;
     27 }
     28 
     29 //堆栈判断是否为空
     30 
     31 int ListStackEmpty(ListStack *stack)
     32 {
     33     if (stack->next == NULL)
     34     {
     35         return 0;
     36     }
     37     else
     38     {
     39         return 1;
     40     }
     41 }
     42 
     43 //堆栈进栈
     44 
     45 int ListStackPush(ListStack *stack, DataType x)
     46 {
     47     ListStack *pTemp;
     48     if ((pTemp = (ListStack*)malloc(sizeof(ListStack))) == NULL)
     49     {
     50         return 0;
     51     }
     52     pTemp->data = x;
     53     /*pTemp->next = NULL;*/
     54 
     55     pTemp->next = stack->next;
     56     stack->next = pTemp;
     57     return 1;
     58 }
     59 
     60 //堆栈出栈
     61 
     62 int ListStackPop(ListStack *stack, DataType *x)
     63 {
     64     ListStack *del=stack->next;//赋值
     65     if (del==NULL)
     66     {
     67         return 0;
     68     }
     69     
     70     stack->next = del->next;
     71     *x = del->data;
     72     free(del);
     73     return 1;
     74 }
     75 
     76 //堆栈取出栈顶
     77 
     78 int ListStackTopPop(ListStack *stack,DataType *n)
     79 {
     80     ListStack *temp=stack->next;
     81 
     82     if (temp==NULL)
     83     {
     84         return 0;
     85     }
     86     *n=temp->data;
     87     return 1;
     88 }
     89 
     90 //链表销毁
     91 
     92 void ListDestroy(ListStack *stack)
     93 {
     94     ListStack *pTemp, *del;
     95     //if ((del = (ListStack*)malloc(sizeof(ListStack))) == NULL)
     96     //{
     97     //    return 0;
     98     //}
     99     pTemp = stack;
    100     //pTemp = pTemp->next;   //2018年8月16日 14:35:09   更正
    101     while (pTemp!=NULL)
    102     {
    103         del = pTemp;
    104         pTemp = pTemp->next;
    105         free(del); //2018年8月16日 08:59:48  出现中断?
    106         
    107         del = NULL;           //2018年8月16日 14:34:56   更正
    108     }
    109     /*stack->next = NULL;*/
    110 }
    111 //主函数
    112 
    113 int main()
    114 {
    115     ListStack *head;
    116     int i;
    117     DataType m, x;
    118 
    119     ListStackInit(&head);
    120     for ( i = 0; i < 10; i++)
    121     {
    122         if ((ListStackPush(head, i + 1)) == 0)
    123         {
    124             printf("插入错误
    ");
    125             getchar();
    126             return ;
    127         }
    128     }
    129     ListStackTopPop(head, &m);
    130     printf("栈顶=%d
    ",m );
    131     //for ( i = 0; i < 10; i++)
    132     while (ListStackEmpty(head)!=0/*head.next!=NULL*/)     //替换for循环在ListStackPop()中出现中断
    133     {
    134         if ((ListStackPop(head,&x)==0))
    135         {
    136             printf("取出错误
    ");
    137             getchar();
    138             return;
    139         }
    140         else
    141         {
    142             printf("%d   ", x);
    143         }
    144     }
    145     ListDestroy(head);
    146     getchar();
    147     return 0;
    148 }
  • 相关阅读:
    外刊IT评论网
    9 More Mind-Blowing WebGL Demos
    主流开源许可协议比较(BSD,Apache,GPL,LGPL,MIT...)
    jsPlumb
    SharePoint Designer 2013 Workflow
    The Zip, GZip, BZip2 and Tar Implementation For .NET
    Config Sharepoint 2013 Workflow PowerShell Cmdlet
    iTextSharp
    模糊查询
    asp.net Cookie
  • 原文地址:https://www.cnblogs.com/leime/p/9488390.html
Copyright © 2020-2023  润新知