C语言实现顺序栈的进出栈操作
#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"); }
原文地址: https://www.cveoy.top/t/topic/pcrI 著作权归作者所有。请勿转载和采集!