用C语言栈线性表,完成创建、入栈或出栈
时间: 2024-10-14 19:13:35 浏览: 50
在C语言中,我们可以使用数组或者动态内存分配(如`malloc()`)来实现一个简单的栈数据结构。这里我们以数组为例来讲解基本操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int* stack; // 栈底指针
int top; // 栈顶元素的位置
int size; // 栈的大小
} Stack;
// 创建栈
Stack createStack(int capacity) {
Stack s;
s.stack = (int*)malloc(capacity * sizeof(int));
if (!s.stack) {
printf("Memory allocation failed.\n");
return s;
}
s.top = -1;
s.size = capacity;
return s;
}
// 入栈(push)
void push(Stack* s, int value) {
if (s->top == s->size - 1) {
printf("Stack is full, cannot push.\n");
return;
}
s->stack[++(s->top)] = value;
}
// 出栈(pop)
int pop(Stack* s) {
if (s->top == -1) {
printf("Stack is empty, cannot pop.\n");
return -1;
}
return s->stack[s->top--];
}
// 主函数示例
int main() {
Stack myStack = createStack(MAX_SIZE);
push(&myStack, 5);
push(&myStack, 10);
printf("%d popped from the stack: %d\n", pop(&myStack), myStack.stack[myStack.top]);
return 0;
}
```
在这个例子中,`createStack()`用于初始化栈,`push()`将元素放入栈顶,`pop()`从栈顶取出元素。注意处理栈满和栈空的情况。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://img-home.csdnimg.cn/images/20250102104920.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)