zoukankan      html  css  js  c++  java
  • 堆栈的顺序存储实现

    
    
     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<cstdio>
     4 #define Max 50
     5 #define OK 1
     6 using namespace std;
     7 typedef int ElemType;
     8 typedef struct Stack //顺序栈的定义
     9 {
    10     ElemType *elem;
    11     int top;
    12     int capactiy;
    13 }TStack,TNode;
    14 
    15 int StackInit(TStack &s)//顺序栈的初始化
    16 {
    17     s.elem =(ElemType*)malloc(sizeof(ElemType) * Max);
    18     if (!s.elem)
    19         exit(-1);
    20     s.top = 0;
    21     s.capactiy = Max;
    22     return 0;
    23 }
    24 
    25 void StackDestory(TStack& s)//销毁栈
    26 {
    27     if (!s.elem)
    28         return;
    29     free(s.elem);
    30     s.elem = nullptr;
    31     s.capactiy = 0;
    32     s.top = 0;
    33 }
    34 
    35 void StackClear(TStack& s)//清空栈
    36 {
    37     s.top = 0;
    38 }
    39 
    40 bool StackEmpty(TStack* s)//顺序栈是否为空
    41 {
    42     return s->top == 0;
    43 }
    44 
    45 
    46 bool StackPush(TStack* s, ElemType e)//顺序栈入栈
    47 { 
    48     s->elem[s->top++] = e;
    49     return true;
    50 }
    51 
    52 bool StackPop(TStack* s)///顺序栈出栈
    53 {
    54     if (StackEmpty(s)||s->top == 0)
    55     {
    56         return false;
    57     }
    58     else
    59     {
    60         --s->top;
    61         return true;
    62     }
    63 }
    64 
    65 ElemType StackTop(TStack s)//顺序栈栈顶元素查询
    66 {
    67     return s.elem[--s.top];
    68 }
    69 
    70 void StackShow(TStack s)//顺序栈的遍历
    71 {
    72     for (int i = 0; i < s.top; ++i)
    73     {
    74         cout << s.elem[i] << " ";
    75     }
    76 }
    77 
    78 int main() {
    79     TStack s ;
    80     StackInit(s);
    81     StackPush(&s, 2);
    82     StackPush(&s, 3);
    83     StackPush(&s, 4);
    84     StackPush(&s, 5);
    85     StackShow(s);
    86     cout << endl;
    87     cout << StackTop(s) << endl;
    88     StackPop(&s);
    89     StackShow(s);
    90     cout << endl;
    91     cout << StackEmpty(&s) << endl;
    92     StackClear(s);
    93     cout << StackEmpty(&s) << endl;
    94     StackDestory(s);
    95     return 0;
    96 
    97 }
    
    

    
    
  • 相关阅读:
    4111130工作总结
    js enumerations 01
    有角度地事件解读,有品质地视觉呈现。《视界》
    Mule 入门之:环境搭建
    Date 对象用于处理日期和时间
    JS脚本,时间判断问题
    丈夫道(zhuan)
    查看IP连接netstat
    二代支付简介
    对付网页无法复制的最简单绝招 ( 转)
  • 原文地址:https://www.cnblogs.com/dhhu007/p/13195560.html
Copyright © 2011-2022 走看看