• vs2010编译C++ 栈的使用


    // CTest.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    using namespace std;
    
    typedef int ElemType;
    struct Stack{
        ElemType *stack;
        int top;
        int maxSize;
    };
    void InitStack(Stack& s){
        s.maxSize =10;//设置栈空间的大小为10个元素的位置
        s.stack = new ElemType[s.maxSize];
        if(!s.stack){
            cerr<<"动态存储分配失败"<<endl;
            exit(1);
        }
        s.top=-1;//初始栈为空cf
    }
    void Push(Stack &s,ElemType item){//元素item进栈,即插入到栈顶
        if(s.top==s.maxSize-1){
            int k = sizeof(ElemType);
            s.stack = (ElemType *)realloc(s.stack,2*s.maxSize*k);
            s.maxSize = 2*s.maxSize;
        }
        s.top++;
        s.stack[s.top]=item;
    }
    ElemType Pop(Stack &s){//删除栈顶元素,并返回
        if(s.top==-1){
            cerr<<"Stack is empty!"<<endl;
            //exit(1);
        }
        s.top--;
        return s.stack[s.top+1];
    }
    ElemType Peek(Stack &s){//读取栈顶的元素
        if(s.top==-1){
            cerr<<"Stack is empty!"<<endl;
            exit(1);
        }
        return s.stack[s.top];
    }
    bool EmptyStack(Stack &s){//清空栈
        return s.top == -1;
    }
    void ClearStack(Stack &s){
        if(s.stack){
            delete []s.stack;
            s.stack = 0;
        }
        s.top = -1;
        s.maxSize = 0;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
        Stack s;
        InitStack(s);//初始化栈
        int a[8]={3,8,5,17,9,30,15,22};
        for(int i=0;i<8;i++){//将数据插入到栈顶
            Push(s,a[i]);
        }
        cout<<Pop(s);
        cout<<' '<<Pop(s)<<endl;
        Push(s,86);
        cout<<Peek(s);
        cout<<' '<<Pop(s)<<endl;
        while(!EmptyStack(s)){//如果栈不为空
            cout<<Pop(s)<<' ';
        }
        cout<<endl;
        ClearStack(s);
        system("pause");
        return 0;
    }
  • 相关阅读:
    (轻松一刻)神秘而又强大的蓝翔学院!而且还是当中最可怕的挖掘机系!
    IIS 反向代理二级目录及泛目录
    正则表达式匹配外链和内链
    关于 preg_replace_callbank 的学习记录
    Linux 笔记
    Linux 笔记
    Linux 笔记
    使用 Docker 安装 showdoc
    Docker 入门
    Linux 笔记
  • 原文地址:https://www.cnblogs.com/bksqmy/p/4524587.html
Copyright © 2020-2023  润新知