编写算法,判断一个己知栈是否为空,是则返回1,否则返回0用C语言
时间: 2024-09-18 13:18:03 浏览: 31
在C语言中,你可以使用栈的数据结构特性来编写一个简单的函数来判断栈是否为空。栈是一种后进先出(LIFO)的数据结构,如果你只有一个操作(pop),并且没有任何元素在栈顶,那么栈就是空的。
下面是一个示例函数`isStackEmpty`,它通过检查栈顶元素是否为`NULL`来判断栈是否为空:
```c
#include <stdio.h>
#include <stdlib.h> // 包含堆内存管理
// 定义一个动态大小的栈结构
typedef struct StackNode {
int data; // 存储数据
struct StackNode* next;
} StackNode;
// 创建一个新的栈节点
StackNode* createNewStackNode(int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 初始化栈
StackNode* initStack() {
return NULL;
}
// 将元素压入栈中
void push(StackNode** top, int value) {
StackNode* newNode = createNewStackNode(value);
if (*top != NULL) {
newNode->next = *top;
} else {
*top = newNode;
}
}
// 判断栈是否为空
int isStackEmpty(StackNode* top) {
return top == NULL; // 如果栈顶指针为NULL,则栈为空,返回1;否则返回0
}
int main() {
StackNode* stack = initStack(); // 初始化一个空栈
// ... 进行其他栈操作
// 调用函数判断栈是否为空
int isEmpty = isStackEmpty(stack);
printf("Stack is empty: %d\n", isEmpty);
return 0;
}
```
在这个例子中,`isStackEmpty`函数接收一个指向栈顶的指针作为参数。如果该指针为空,说明栈是空的,函数返回1;否则,返回0。