C语言栈操作:使用指针访问栈顶元素
C语言栈操作:使用指针访问栈顶元素
在C语言中,可以使用指针来实现栈的操作。通常,栈顶指针指向栈顶元素的下一个位置。要读取栈顶元素,可以使用 *(top-1) 来获取栈顶元素的值。
下面是一个示例代码:
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int* top = stack; // top指针指向栈顶元素的下一个位置
void push(int value) {
if (top - stack < MAX_SIZE) {
*top = value;
top++;
} else {
printf("Stack Overflow\n");
}
}
int pop() {
if (top == stack) {
printf("Stack Underflow\n");
return -1;
} else {
top--;
return *top;
}
}
int peek() {
if (top == stack) {
printf("Stack is Empty\n");
return -1;
} else {
return *(top - 1);
}
}
int main() {
push(1);
push(2);
push(3);
printf("Stack top element: %d\n", peek());
pop();
printf("Stack top element after popping: %d\n", peek());
return 0;
}
输出结果:
Stack top element: 3
Stack top element after popping: 2
在这个例子中,我们使用 push 函数将元素1、2和3依次入栈,然后使用 peek 函数读取栈顶元素的值,再使用 pop 函数将栈顶元素出栈,最后再次使用 peek 函数读取栈顶元素的值。
为什么指针指向栈顶元素的下一个位置?
因为这样可以让 push 函数方便地将新元素添加到栈顶,同时可以避免在栈为空时访问非法内存。当指针指向栈顶元素的下一个位置时,我们可以直接将新元素存储到该位置,并将指针向后移动一个位置,表示栈顶元素已经改变。
希望本文能够帮助您理解C语言中使用指针实现栈操作的原理。
原文地址: https://www.cveoy.top/t/topic/qoR0 著作权归作者所有。请勿转载和采集!