zoukankan      html  css  js  c++  java
  • 数据结构之栈的定义

    #include  "stdafx.h"
    #include<iostream>
    using namespace std;
    #include<malloc.h>
    
    typedef int ElemType;
    #define OK               1        //正确
    #define ERROR            0        //失败
    #define STACK_INIT_SIZE 5          //栈的初始化容量
    #define STACK_INCREAMENT 2          //栈满之后,增加的容量
    typedef struct Stack
    {
        ElemType *base;    //栈低指针
        ElemType *top;  //栈顶指针
        int stacksize;    //栈的最大容量
    }SqStack;
    
    //初始化
    void InitStack(SqStack &S)
    {    
        S.base=(ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
        if(!S.base) return;
        S.top=S.base;
        S.stacksize = STACK_INIT_SIZE;
    }
    //获取栈顶元素
    void GetTop(SqStack &S)
    {    
        if(S.top==S.base)
        {
            cout<<"栈内没有元素"<<endl;
            return;
        }
        cout<<"栈顶元素是:"<<*(S.top-1)<<endl;
    }
    
    //进栈
    void Push(SqStack &S,ElemType e)
    {    
        if(S.top-S.base>=S.stacksize)
        {
            cout<<"栈满了,继续为其分配空间 ... "<<endl;
            //realloc 函数
            S.base=(ElemType *)realloc(S.base,(S.stacksize+STACK_INCREAMENT) * sizeof(ElemType));
            if(!S.base) return;
            S.top=S.base+S.stacksize;
            S.stacksize += STACK_INCREAMENT;
        }
        *S.top++=e;
        //S.top++;
    }
    
    //出栈
    void Pop(SqStack &S)
    {    
        if(S.top==S.base)
        {
            cout<<"栈内没有元素"<<endl;
            return;
        }
        cout<<"出栈的元素是:"<<*--S.top<<endl;    //先使指针减1,然后取值,相当于*(S.top-1);S.top--;
    }
    
    int main(int argc,char* argv[])
    {
        SqStack s;
        int e;
        InitStack(s);
        Push(s,1);
        Push(s,2);
        Push(s,3);
        Pop(s);
        Pop(s);
        Pop(s);
        GetTop(s);
        Push(s,4);
        Push(s,5);
        Pop(s);
        Push(s,6);
        Push(s,7);
        GetTop(s);
        Push(s,8);
        Push(s,9);
        Push(s,10);
        Pop(s);
        Pop(s);
        Pop(s);
        Pop(s);
        Pop(s);
        Pop(s);
        Pop(s);
        Pop(s);
        cin>>e;
        return 0;
    }
  • 相关阅读:
    刷新页面的问题
    JS属性
    1-4_基本概念_进程间通信及同步
    1-3_基本概念_程序&进程
    1-2_基本概念_用户和组&目录、链接及文件
    1-1_基本概念_内核&shell
    d 操作系统概述
    对比生成测试算法用例
    简单的排序算法:冒泡排序法
    简单的排序算法:插入排序法
  • 原文地址:https://www.cnblogs.com/lbangel/p/3319629.html
Copyright © 2011-2022 走看看