C语言顺序栈实现:进栈、出栈、初始化操作详解
#include 'Stack.h'
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;
}
/* 功能: 实现初始化栈的操作。
参数:
pStack -- 栈指针
*/
void init(PSeqStack pStack)
{
pStack->s = (DataType *)malloc(MAXNUM * sizeof(DataType)); //申请存储空间
memset(pStack->s, 0, MAXNUM * sizeof(DataType));
pStack->top = -1; //栈顶指针初始值为-1
pStack->maxNum = MAXNUM;
}
/* 功能: 实现进栈操作。
参数: pStack -- 栈指针 x -- 进栈的数据
*/ void Push(PSeqStack pStack, DataType x) {
if (pStack->top >= pStack->maxNum - 1) { // 栈已满
return;
}
pStack->top++; // 栈顶指针加1
pStack->s[pStack->top] = x; // 数据入栈
}
/* 功能: 实现出栈操作。
参数: pStack -- 栈指针 e -- 出栈的数据
*/ void Pop(PSeqStack pStack) {
if (pStack->top == -1) { // 栈为空
return;
}
pStack->top--; // 栈顶指针减1
}
/* 功能: 实现进栈和出栈操作。
参数: pStack -- 栈指针
*/ void PushPopStack(PSeqStack 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(PSeqStack pStack) { int index = pStack->top; while(index > -1) { printf('%d ', *(pStack->s + index)); index--; } printf(' '); }
原文地址: https://www.cveoy.top/t/topic/pcrR 著作权归作者所有。请勿转载和采集!