模拟栈-C描述

来源:互联网 发布:linux 压缩命令 tar 编辑:程序博客网 时间:2024/06/06 15:38

模拟栈-C描述

#include<stdlib.h>#include<stdio.h>#define STATUS_OK 1#define STATUS_ERROR 0#define TRUE 1#define FALSE 0#define MAX_SIZE 20typedef int Status;typedef int SElementType;//栈元素typedef struct {SElementType data[MAX_SIZE];int top;}SqStack;Status visit(SElementType d) {//显示元素printf("%d", d); return STATUS_OK;}Status initStack(SqStack *S) {S->top = -1; return STATUS_OK;}Status clearStack(SqStack *S) {S->top = -1; return STATUS_OK;}Status isEmpty(SqStack *S) {return S->top == -1 ? TRUE : FALSE;}int  getLength(SqStack S) {return (S.top + 1);}Status getTop(SqStack *S, SElementType *e) {if (isEmpty(S)){return STATUS_ERROR;}*e = S->data[S->top];return STATUS_OK;}Status pop(SqStack * S, SElementType * e) {//出栈if (isEmpty(S)) return STATUS_ERROR;*e = S->data[S->top];S->top--;return STATUS_OK;}Status push(SqStack *S, SElementType e) {//压栈if (S->top>MAX_SIZE - 1)return STATUS_ERROR;S->top++;S->data[S->top] = e;return STATUS_OK;}Status traverse(SqStack  S) { //展示栈int i = 0;while (i <= S.top){visit(S.data[i++]);}printf("\n");return STATUS_OK;}void main() {SqStack stack;int j = 0;int e = 0;if (initStack(&stack)) {for (int i = 0; i < 10; i++){push(&stack, i);//压栈}}printf("栈中元素依次为:");traverse(stack);pop(&stack, &e);printf("\n弹出栈顶元素:%d", e);getTop(&stack, &e);printf("\n栈顶元素是:%d",e);printf(isEmpty(&stack)?"\n栈是空栈":"\n栈不是空栈");printf("\n栈的长度是:%d", getLength(stack));clearStack(&stack);printf("\n栈的长度是:%d", getLength(stack));getchar();}


0 0
原创粉丝点击