出栈完整程序是什么

时间:2025-01-27 09:01:44 手机游戏

出栈操作通常包括以下步骤:

判断栈是否为空 :检查栈顶指针是否指向有效位置,如果指向有效位置,则栈不为空;反之,栈为空。

若栈不为空,则执行出栈操作

从栈顶取出元素:

根据栈顶指针的位置,获取栈顶元素的值。

更新栈顶指针:将栈顶指针向下移动一位,指向下一个元素的位置。

返回取出的元素:将取出的元素作为出栈的结果返回。

```c

include

include

typedef struct {

int *data;

int top;

int maxSize;

} Stack;

// 初始化栈

Stack* createStack(int size) {

Stack *stack = (Stack*)malloc(sizeof(Stack));

stack->maxSize = size;

stack->top = -1;

stack->data = (int*)malloc(stack->maxSize * sizeof(int));

return stack;

}

// 出栈操作

int pop(Stack *stack) {

if (stack->top == -1) {

printf("栈为空,无法出栈!\n");

return -1; // 或者其他错误处理

}

int poppedElement = stack->data[stack->top];

stack->top--;

return poppedElement;

}

int main() {

Stack *stack = createStack(5);

stack->data = 1;

stack->data = 2;

stack->data = 3;

stack->data = 4;

stack->data = 5;

printf("栈顶元素是: %d\n", stack->data[stack->top]); // 输出: 5

printf("出栈元素是: %d\n", pop(stack)); // 输出: 5

printf("栈顶元素是: %d\n", stack->data[stack->top]); // 输出: 4

// 销毁栈

free(stack->data);

free(stack);

return 0;

}

```

在这个示例中,我们首先创建了一个栈,并向其中添加了元素。然后,我们通过调用`pop`函数来出栈,并打印出栈顶元素和出栈后的栈顶元素。最后,我们释放了栈所占用的内存。