栈(基于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; }

浙公网安备 33010602011771号