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 }
  • 相关阅读:
    2018.10.05模拟总结
    CentOS 7 分区方案
    Linux讲解之定时任务
    TrueCrypt与CryptSetup双系统全盘加密(图文)
    使用LUKS加密你的磁盘
    使用LUKS加密你的磁盘
    本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法。
    Xrdp
    CentOS7开放端口以及常用的使用命令记录整理
    【Python成长之路】装逼的一行代码:快速共享文件
  • 原文地址:https://www.cnblogs.com/hanyuan/p/stack.html
Copyright © 2011-2022 走看看