使用C语言实现栈的基本操作的示例代码:
#include
#define MAX_SIZE 10
int stack[MAX_SIZE];
int top = -1;
void push(int item) {
if (top >= MAX_SIZE - 1) { // 检查是否栈满
printf("Stack Overflow\n");
} else {
top++; // 栈顶指针加 1
stack[top] = item; // 将元素压入栈
}
}
int pop() {
int item;
if (top < 0) { // 检查是否栈空
printf("Stack Underflow\n");
return -1; // 返回一个无效值
} else {
item = stack[top]; // 取出栈顶元素
top--; // 栈顶指针减 1
return item; // 返回取出的元素
}
}
int peek() {
if (top < 0) { // 检查是否栈空
printf("Stack is Empty\n");
return -1; // 返回一个无效值
} else {
return stack[top]; // 返回栈顶元素
}
}
int main() {
push(10);
push(20);
push(30);
printf("Peek: %d\n", peek()); // 输出栈顶元素
printf("Pop: %d\n", pop());
printf("Pop: %d\n", pop());
printf("Pop: %d\n", pop());
printf("Pop: %d\n", pop()); // 输出栈空提示
return 0;
}
输出结果为:
Peek: 30
Pop: 30
Pop: 20
Pop: 10
Stack is Empty
Pop: -1
在本示例中,我们定义了一个整型数组 stack
作为栈的存储空间,定义变量 top
表示栈顶指针的位置,初值为 -1 表示栈为空。 push()
函数将元素压入栈中,pop()
函数将元素从栈中弹出, peek()
函数返回栈顶元素。在每个函数中,我们都检查了栈是否已满或已空,以避免出现数组越界错误。在 main()
函数中,我们演示了如何使用这些函数。