zoukankan      html  css  js  c++  java
  • 链栈的实现

    stack.h

     1 #ifndef _STACK_H
     2 #define _STACK_H
     3 
     4 #include<stdio.h>
     5 #include<stdlib.h>
     6 
     7 typedef struct StackNode
     8 {
     9     int data;
    10     struct StackNode* next;
    11 }StackNode,*LinkStack;
    12 
    13 //初始化
    14 void init(LinkStack top);
    15 //判断栈是否为空
    16 int isEmpty(LinkStack top);
    17 //将一个元素压入栈
    18 int push(LinkStack top, int val);
    19 //从栈中弹出一个元素
    20 int pop(LinkStack top, int *val);
    21 //获取栈顶元素的值
    22 int getTop(LinkStack top);
    23 
    24 
    25 #endif

    stack.c

     1 #include "stack.h"
     2 
     3 void init(LinkStack top)
     4 {
     5     top->next = NULL;
     6 }
     7 
     8 int isEmpty(LinkStack top)
     9 {
    10     if(top->next == NULL)
    11         return 1;
    12     return 0;
    13 }
    14 //top指向的结点为空的头结点
    15 int push(LinkStack top, int val)
    16 {
    17     StackNode *newNode;
    18     newNode = (StackNode*)calloc(1,sizeof(StackNode));
    19     newNode->data = val;
    20 
    21     if(newNode == NULL)
    22         return 0;
    23     newNode->next = top->next;
    24     top->next = newNode;
    25     return 1;
    26 }
    27 
    28 
    29 int pop(LinkStack top, int *val)
    30 {
    31     StackNode *oldNode;
    32     if(isEmpty(top))
    33     {
    34         printf("The stack is empty!
    ");
    35         return 0;
    36     }
    37     oldNode = top->next;
    38     //记录栈顶元素的值
    39     *val = oldNode->data;
    40     top->next = oldNode->next;
    41     //释放
    42     free(oldNode);
    43     return 1;
    44 }
    45 
    46 int getTop(LinkStack top)
    47 {
    48     return top->next->data;
    49 }

    main.c

     1 #include "stack.h"
     2 
     3 int main()
     4 {
     5     LinkStack top;
     6     top = (StackNode*)malloc(sizeof(StackNode));
     7     int val, index;
     8     init(top);
     9 
    10     //向栈中压入一系列元素
    11     for(index = 0; index < 12; index++)
    12         push(top,index);
    13 
    14     //获取栈顶元素
    15     val = getTop(top);
    16     printf("栈顶元素为:%d
    ",val);
    17 
    18 
    19     //弹出栈中元素
    20     printf("依次弹出栈顶元素:
    ");
    21     while(!(isEmpty(top)))
    22     {
    23         pop(top,&val);
    24         printf("->%2d",val);
    25     }
    26     printf("
    ");
    27     return 0;
    28 }

     运行结果:

  • 相关阅读:
    配置多个视图解析器
    在500jsp错误页面获取错误信息
    移动端浏览器监听返回键
    eclipse添加js智能代码提示
    js验证银行卡号 luhn校验规则
    免装版tomcat注册成windows系统服务方法
    微信公众号支付,为什么你找了那么多关于微信支付博客案例依然跑不通......两步带你完成支付,看完还做不出来你找我
    jsp自定义标签
    MyBatis动态传入表名
    配置tomcat允许跨域访问,cors跨域资源共享
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4428583.html
Copyright © 2011-2022 走看看