1. 程式人生 > >順序棧的基本操作實現c++

順序棧的基本操作實現c++

注:若有問題或需要補充的內容請告之,新手上路,謝謝。

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<string>
#include<algorithm>
#include<ctype.h>
using namespace std;

#define MAXSIZE 100

/*結構體*/
typedef struct lnode
{
    int data[MAXSIZE];
    int top;
}seqstack;
/*初始化*/
seqstack *init_stack()
{
    seqstack *s;
    s=(seqstack*)malloc(sizeof(seqstack));
    s->top=-1;
    return s;
}
/*判斷棧空*/
bool is_empty_seqstack(seqstack s)
{
    if(s.top==-1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
/*銷燬棧*/
void delete_stack(seqstack *s)
{
    s->top=-1;
    printf("棧銷燬成功\n");
}
/*判斷棧滿*/
bool is_full_seqstack(seqstack s)
{
    if(s.top==MAXSIZE-1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
/*進棧*/
void push(seqstack *s,int e)
{
    if(is_full_seqstack(*s))
    {
        printf("棧滿");
    }
    else
    {
        s->data[++s->top]=e;
    }
}
/*出棧*/
void pop(seqstack *s,int &e)
{
    if(is_empty_seqstack(*s))
    {
        printf("棧空");
    }
    else
    {
        e=s->data[s->top--];
    }
}
/*取棧頂元素*/
void get_top(seqstack s,int &e)
{
    if(is_empty_seqstack(s))
    {
        printf("棧空");
    }
    else
    {
        e=s.data[s.top];
    }
}
/*輸出棧*/
void print(seqstack s)
{
    while(!is_empty_seqstack(s))
    {
        printf("%d",s.data[s.top--]);
    }
}
int main()
{
    seqstack *s;
    int l,e;
    s=init_stack();
    printf("請輸入需要入棧的元素個數:");
    scanf("%d",&l);
    printf("請依次輸入入棧的元素:");
    for(;l>0;l--)
    {
        scanf("%d",&e);
        push(s,e);
    }
    printf("依次出棧的元素為:");
    while(!is_empty_seqstack(*s))
    {
        pop(s,e);
        printf("%d",e);
    }
    printf("\n");
    delete_stack(s);
    return 0;
}