数据结构_Stack_normal stack
数据结构_Stack_normal stack

数据结构_Stack_normal stack

#include<iostream>
using namespace std;
const int MAX_SIZE=100;

struct stack
{
    int data[MAX_SIZE];
    int top;
};

void InitializeStack(stack* point)              //初始化栈
{
    point->top=-1;
}

bool isEmpty(stack* point)                      //判断是否为空
{
    if(point->top==-1)
    return true;
    else
    return false;
}

bool isFull(stack* point)                       //判断是否为满
{
    if(point->top==MAX_SIZE-1)
    return true;
    else
    return false;
}

int pop(stack* point)                   //出栈
{
    if(isEmpty(point))
    {
        cout<<"栈已空";
        return 0;
    }
    int val=point->data[point->top];
    point->top--;
    return val;
}

void push(stack* point,int val)         //入栈
{
    if(isFull(point))
    {
        cout<<"栈已满";
        return ;
    }
    point->top++;
    point->data[point->top]=val;
}

int GetTop(stack* point)            //获取栈顶元素
{
    if(isEmpty(point))
    {
        cout<<"无栈顶元素";
        return 0;
    }
    return point->data[point->top];
}

int main()
{
    stack s1;
    InitializeStack(&s1);
    int n;
    cout<<"请输入入栈元素个数:";
    cin>>n;
    cout<<"请依次输入入栈元素:";
    for(int i=0;i<n;i++)
    {
        int val;
        cin>>val;
        push(&s1,val);
    }
    int topval;
    for(int i=0;i<n;i++)
    {
        topval=GetTop(&s1);
        cout<<"当前栈顶元素"<<topval<<" ";
        cout<<pop(&s1)<<"出栈!";
    }

    return 0;
}
C++

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注