栈的顺序储存和表现c语言源代码
时间: 2024-11-22 11:35:23 浏览: 9
栈是一种数据结构,它遵循“先进后出”(Last In First Out,LIFO)的原则,类似于一叠书的堆叠。在C语言中,我们可以用数组或动态内存分配的数据结构如`struct stack`来实现栈的顺序存储。
顺序存储意味着元素是连续存储在内存中的,比如我们创建一个数组`stack elements[]`,每个新插入的元素会放在数组的末尾。当需要弹出(删除并返回顶部元素)时,也是从数组的开头开始移除。
在C语言源代码中,栈通常用于局部变量、函数调用、递归等场景。例如:
```c
typedef struct {
int* data; // 存储数据的指针
int top; // 栈顶元素的索引
int capacity; // 栈的最大容量
} Stack;
Stack* create_stack(int size) {
Stack* s = (Stack*)malloc(sizeof(Stack));
s->data = malloc(size * sizeof(int)); // 分配初始内存
s->top = -1;
s->capacity = size;
return s;
}
void push(Stack* s, int value) {
if (s->top == s->capacity - 1) { // 栈满
printf("Stack overflow\n");
return;
}
s->data[++s->top] = value;
}
int pop(Stack* s) {
if (s->top == -1) { // 栈空
printf("Stack underflow\n");
return -1;
}
return s->data[s->top--];
}
```
阅读全文