c语言版栈的数据结构
时间: 2024-10-17 13:01:56 浏览: 1
在C语言中,栈是一种线性的数据结构,它遵循“后进先出”(Last In, First Out,LIFO)的原则。常见的栈数据结构有以下几种:
1. 数组实现的栈:
- 使用数组作为底层存储,通过top指针跟踪栈顶元素的位置。入栈操作通常将元素添加到数组的顶部,出栈操作则移除并返回顶部元素。
```c
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
```
2. 结构体定义的栈:
- 如果需要自定义数据类型的栈,可以创建一个包含所需数据的结构,并用动态内存分配的方式管理栈的大小。
```c
typedef struct {
int data; // 根据实际需求替换为其他数据类型
struct Node *next; // 指向下一个节点的指针
} StackNode;
StackNode *stack_top = NULL;
```
3. 动态内存分配的栈:
- 使用`malloc()`和`free()`函数动态地分配和释放栈空间,可以根据需要增长或缩小栈的大小。
```c
void push(int value) {
StackNode* newNode = (StackNode*) malloc(sizeof(StackNode));
if(newNode != NULL) {
newNode->data = value;
newNode->next = stack_top;
stack_top = newNode;
}
}
int pop() {
if(stack_top == NULL)
return -1; // 栈空处理
int value = stack_top->data;
StackNode* temp = stack_top;
stack_top = stack_top->next;
free(temp);
return value;
}
```
阅读全文