数据结构——栈

xiaoxiao2021-02-28  93

#include <stdio.h> #define STACK_SIZE 100 #define OK        0    #define ERROR    -1   typedef int DATATYPE; typedef struct { DATATYPE data[STACK_SIZE]; // 栈数组 int top;                   // 栈顶下标 }SeqStack; // 置空栈 int InitStack (SeqStack *s) { if (s == NULL) { return ERROR; } s->top = -1; return OK; } // 判断空栈 int StackEmpty(SeqStack *s) { if (s == NULL) { return ERROR;      // 错误返回-1   } return s->top == -1;   // 相等返回1 不相等返回0 } // 判断满栈 int StackFull(SeqStack *s) { if (s == NULL) { return ERROR; } return s->top == STACK_SIZE-1; } // 压栈 int Push(SeqStack *s, DATATYPE data) { if (s == NULL) { return ERROR; } // 判断是否满栈 if (StackFull(s)) { return ERROR; } /* s->top++; s->data[s->top] = data; */ s->data[++s->top] = data; return OK; } // 出栈 int Pop(SeqStack *s) { if (s == NULL) { return ERROR; } // 判断是否空栈 if (StackEmpty(s)) { return ERROR; } DATATYPE data = s->data[s->top--]; return data; } // 获取栈顶元素 int GetTop(SeqStack *s) { if (s == NULL) { return ERROR; } // 判断是否空栈 if (StackEmpty(s)) { return ERROR; } return s->data[s->top];; } int main() { SeqStack stack;   // 栈结构体变量 if (InitStack(&stack) != OK) { return -1; } if (StackEmpty(&stack)) { printf ("是空栈\n"); } else { printf ("不是空栈\n"); } int i; for (i=0; i<10; i++) { if(Push (&stack, i) != OK) { return -1; } } if (StackEmpty(&stack)) { printf ("是空栈\n"); } else { printf ("不是空栈\n"); } for (i=0; i<10; i++) { printf ("M", Pop(&stack)); } if (StackEmpty(&stack)) { printf ("是空栈\n"); } else { printf ("不是空栈\n"); }     return 0; }
转载请注明原文地址: https://www.6miu.com/read-66424.html

最新回复(0)