栈(基于c语言,顺序表)

 

就是一些书上的内容,比较简单。

#include <stdio.h>
#include <stdlib.h>

typedef int DataType;
struct SeqStack{
    int MAXNUM;    //栈的最大容量 
    int t;    //栈顶 
    DataType* data;    //栈容器 
};
typedef struct SeqStack* PSeqStack;

PSeqStack createEmptyStack_seq(int m);
int isEmptyStack_seq(PSeqStack stack);
void push_seq(PSeqStack stack,DataType data);
int length_seqStack(PSeqStack stack);
DataType pop_seq(PSeqStack stack);


int main(void){
    PSeqStack stack = createEmptyStack_seq(10);
    push_seq(stack,1);
    push_seq(stack,2);
    push_seq(stack,3);
    push_seq(stack,8);
    push_seq(stack,19);
    while(!isEmptyStack_seq(stack)){
        printf("%d\n",pop_seq(stack));
    }
    printf("%d\n",length_seqStack(stack));

}

PSeqStack createEmptyStack_seq(int m){
    PSeqStack stack = (PSeqStack)malloc(sizeof(struct SeqStack));
    if(stack == NULL){
        printf("WRONG");
        return NULL;
    }else{
        stack->data = (DataType*)malloc(sizeof(DataType)*m);
        stack->MAXNUM = m;
        stack->t = -1;
        return stack;
    }    
}

int isEmptyStack_seq(PSeqStack stack){
    return (stack->t == -1);
}

void push_seq(PSeqStack stack,DataType data){
    if(stack->t >= stack->MAXNUM-1){
        printf("FULL!!!");
        return ;
    }else{
        stack->t = stack->t + 1;
        stack->data[stack->t] = data;
    }
}

int length_seqStack(PSeqStack stack){
    return (stack->t+1);
}

DataType pop_seq(PSeqStack stack){
    if(stack->t == -1){
        printf("0个");
        return -999999;
    }
    DataType a = stack->data[stack->t];
    stack->t = stack->t - 1;
    return a;    
}

 

posted @ 2021-04-06 19:39  吃心王  阅读(154)  评论(0)    收藏  举报