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 }
    
    

    
    
  • 相关阅读:
    SQL Server2000的ROWGUID 列
    数据库主键设计之思考
    SQL Server 索引结构及其使用(四)
    一些基础表单的验证 函数
    JS加密编码算法
    textarea自动增高并隐藏滚动条
    HTML之打开/另存为/打印/刷新/查看原文件等按钮的代码
    Code Snippets
    jQuery验证框架
    Jquery 扩展验证
  • 原文地址:https://www.cnblogs.com/dhhu007/p/13195560.html
Copyright © 2011-2022 走看看