#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(' '); }

C语言顺序栈实现:进栈、出栈、初始化操作详解

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

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