zoukankan      html  css  js  c++  java
  • 栈_顺序表示

     1 #include "stdio.h"
     2 #include "stdlib.h"
     3 typedef int DataType;
     4 
     5 typedef struct mystack
     6 {
     7     //数组最大长度
     8     int MAXN;
     9     //指定栈顶位置
    10     int index;
    11     DataType *element;
    12 
    13 }*MyStack, Stack;
    14 
    15 
    16 //创建一个空栈
    17 MyStack createStack(int num)
    18 {
    19     MyStack stack = NULL;
    20     stack = malloc(sizeof(Stack));
    21     if(stack != NULL)
    22     {
    23         stack->element = malloc(sizeof(DataType) * num);
    24         if(stack ->element != NULL)
    25         {
    26             stack ->MAXN = num;
    27             stack ->index = -1;
    28         }
    29     }
    30     return stack;
    31 }
    32 
    33 //判断栈是否为空
    34 int isEmptyStack(MyStack stack)
    35 {
    36     return stack ->index == -1;
    37 }
    38 
    39 //元素入栈,如果栈已经满则返回0,否则返回1
    40 int push(MyStack stack, DataType x)
    41 {
    42     int index = stack ->index + 1;
    43     if(index >= stack ->MAXN)
    44         return 0;
    45     else
    46     {
    47         stack ->element[index] = x;
    48         stack ->index = index;    
    49         return 1;
    50     }
    51 }
    52 
    53 //元素出栈,如果栈已经为空返回0,否则返回1
    54 int pop(MyStack stack)
    55 {
    56     if(isEmptyStack(stack))
    57         return 0;
    58     else
    59     {
    60         stack ->index--;
    61         return 1;
    62     }
    63 }
    64 
    65 //取栈顶元素
    66 DataType top(MyStack stack)
    67 {
    68     if(!isEmptyStack(stack))
    69         return stack ->element[stack ->index];
    70     return -1;
    71 }
    72 
    73 int main()
    74 {
    75     int len, *in, i;
    76     MyStack stack;
    77     printf("创建栈的大小:");
    78     scanf("%d", &len);
    79     stack = createStack(len);
    80     in = malloc(sizeof(int) * len);
    81     for(i = 0; i<len; i++)
    82     {
    83         printf("输入进栈的数:");
    84         scanf("%d", &in[i]);
    85         push(stack, in[i]);
    86     }
    87     printf("出栈顺序:");
    88     for(i = 0; i < len; i++)
    89     {
    90         printf("%d ",top(stack));
    91         pop(stack);
    92     }
    93     printf("\n");
    94 }
  • 相关阅读:
    需求规格说明书
    需求规格说明书模板0.2版本
    需求规格说明书模板0.1版本
    万事开头难,团队一起盘!!
    工程开始了!(2019-03-04)
    SpringBoot RESTful API返回统一数据格式还不懂?
    Springboot读取配置文件中的属性
    java本地缓存的使用
    解决github访问不了和慢的问题2021-06-27
    Oracle DDL
  • 原文地址:https://www.cnblogs.com/hanyuan/p/stack.html
Copyright © 2011-2022 走看看