C 语言中栈函数的深入解析385


在计算机科学中,栈是一种数据结构,它遵从后进先出 (LIFO) 原则。这意味着最后添加的元素将首先被移除。C 语言提供了广泛的栈函数,用于有效管理栈操作。

栈函数概述

C 语言提供了以下栈函数:* `push()`:将元素压入栈顶
* `pop()`:从栈顶弹出元素
* `peek()`:返回栈顶元素,但不将其弹出
* `isEmpty()`:检查栈是否为空
* `isFull()`:检查栈是否已满

push 函数

`push()` 函数将元素压入栈顶。其语法为:```c
void push(Stack *stack, int element);
```

其中:* `stack` 是指向栈结构的指针
* `element` 是要压入栈中的元素

pop 函数

`pop()` 函数从栈顶弹出元素。其语法为:```c
int pop(Stack *stack);
```

其中:* `stack` 是指向栈结构的指针

peek 函数

`peek()` 函数返回栈顶元素,但不将其弹出。其语法为:```c
int peek(Stack *stack);
```

其中:* `stack` 是指向栈结构的指针

isEmpty 函数

`isEmpty()` 函数检查栈是否为空。其语法为:```c
int isEmpty(Stack *stack);
```

其中:* `stack` 是指向栈结构的指针

isFull 函数

`isFull()` 函数检查栈是否已满。其语法为:```c
int isFull(Stack *stack);
```

其中:* `stack` 是指向栈结构的指针

栈的实现

可以使用数组或链表来实现栈。以下是用数组实现栈的示例代码:```c
#include
#include
#define MAX_SIZE 100
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
void push(Stack *stack, int element) {
if (stack->top == MAX_SIZE - 1) {
printf("Error: Stack is full");
} else {
stack->data[++stack->top] = element;
}
}
int pop(Stack *stack) {
if (stack->top == -1) {
printf("Error: Stack is empty");
return -1;
} else {
return stack->data[stack->top--];
}
}
int peek(Stack *stack) {
if (stack->top == -1) {
printf("Error: Stack is empty");
return -1;
} else {
return stack->data[stack->top];
}
}
int isEmpty(Stack *stack) {
return stack->top == -1;
}
int isFull(Stack *stack) {
return stack->top == MAX_SIZE - 1;
}
int main() {
Stack stack;
= -1;
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("%d", pop(&stack));
printf("%d", pop(&stack));
printf("%d", pop(&stack));
return 0;
}
```

输出:```
3
2
1
```

2024-10-29


上一篇:C 语言中高效输出字符的最佳实践

下一篇:C 语言输出函数格式