C语言用指针输出栈元素个数
时间: 2024-11-12 10:07:17 浏览: 10
在C语言中,如果你想通过指针获取栈元素的个数,通常需要先确定栈的底地址,然后遍历栈,计算从栈顶到某个特定空闲位置的距离。由于栈通常是后进先出(LIFO)的数据结构,你可以从堆栈顶部开始检查每个元素,直到遇到NULL或者其他表示栈底的标志。
以下是一个简单的示例,假设我们有一个整型栈并且栈顶元素存储在`top`指针处:
```c
#include <stdio.h>
// 假设stack_top指向栈顶,size_of_stack返回元素个数
int size_of_stack(int *stack_top) {
int count = 0;
if (stack_top != NULL) { // 检查是否为空
while (*stack_top != '\0' || *stack_top != 0) { // 栈元素通常是空字符'\0'结束
stack_top--; // 移动指针到下一个元素
count++;
}
}
return count; // 返回元素个数
}
int main() {
int stack[] = {10, 20, 30, 40, 50}; // 示例栈
int* stack_top = stack + sizeof(stack) / sizeof(stack[0]); // 计算栈顶
int num_elements = size_of_stack(stack_top);
printf("Stack contains %d elements.\n", num_elements);
return 0;
}
```
在这个例子中,`size_of_stack`函数会返回栈中实际存在的非NULL元素的数量。注意,这个方法假设栈底是空字符`'\0'`,如果不是,你需要相应地调整条件判断。
阅读全文