zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    [Hibernate]
    asc.desc
    Could not obtain connection metadata
    java枚举类Enum方法简介(valueof,value,ordinal)
    maven3 手动安装本地jar到仓库
    maven命令大全
    如何正确遍历删除List中的元素,你会吗?
    Hibernate的session.createSQLQuery的几种查询方式
    Linux-github 搭建静态博客
    我所写的CNN框架 VS caffe
  • 原文地址:https://www.cnblogs.com/bksqmy/p/4524587.html
Copyright © 2011-2022 走看看