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

#define MAXNUM 100

typedef int DataType;

typedef struct SeqStack { DataType *s; // 栈的存储空间 int top; // 栈顶指针 int maxNum; // 栈的最大容量 } SeqStack;

void init(SeqStack *pStack); void Push(SeqStack *pStack, DataType x); void Pop(SeqStack *pStack); void PushPopStack(SeqStack *pStack); void OutputResult(SeqStack *pStack);

int main(int argc, char* argv[]) { SeqStack stack;

stack.maxNum = MAXNUM;

init(&stack);

PushPopStack(&stack);	// 进出栈的操作。

OutputResult(&stack);

free(stack.s);

stack.s = NULL;

return 0;

}

void init(SeqStack *pStack) { pStack->s = (DataType *)malloc(MAXNUM * sizeof(DataType)); //申请存储空间 memset(pStack->s, 0, MAXNUM * sizeof(DataType)); pStack->top = -1; //栈顶指针初始值为-1 pStack->maxNum = MAXNUM;
}

void Push(SeqStack *pStack, DataType x) { if (pStack->top == pStack->maxNum - 1) { printf("Stack is full\n"); return; } pStack->top++; pStack->s[pStack->top] = x; }

void Pop(SeqStack *pStack) { if (pStack->top == -1) { printf("Stack is empty\n"); return; } pStack->top--; }

void PushPopStack(SeqStack *pStack) { Push(pStack, 1); Push(pStack, 3); Push(pStack, 5);

Pop(pStack);
Pop(pStack);

Push(pStack, 2); 
Push(pStack, 4); 

Pop(pStack);	

return;

}

void OutputResult(SeqStack *pStack) { int index = pStack->top; while(index > -1) { printf("%d ", pStack->s[index]); index--; } printf("\n"); }

C语言实现顺序栈的进出栈操作

原文地址: https://www.cveoy.top/t/topic/pcrI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录