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语言中使用指针实现栈操作的原理。

C语言栈操作:使用指针访问栈顶元素

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

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