在C语言中,可以使用数组或链表来实现栈,下面将详细介绍如何使用数组实现栈,并提供相应的代码示例。
1、定义栈结构体:
“`c
typedef struct {
int top; // 栈顶指针
int capacity; // 栈的容量
int* array; // 存储元素的数组
} Stack;
“`
2、初始化栈:
“`c
Stack* createStack(int capacity) {
Stack* stack = (Stack*)malloc(sizeof(Stack));
stack>capacity = capacity;
stack>top = 1; // 初始时栈为空,栈顶指针指向1
stack>array = (int*)malloc(stack>capacity * sizeof(int));
return stack;
}
“`
3、判断栈是否为空:
“`c
int isEmpty(Stack* stack) {
return stack>top == 1;
}
“`
4、判断栈是否已满:
“`c
int isFull(Stack* stack) {
return stack>top == stack>capacity 1;
}
“`
5、入栈操作:
“`c
void push(Stack* stack, int item) {
if (isFull(stack)) {
printf("Stack is full!
");
return;
}
stack>array[++stack>top] = item; // 将元素压入栈顶,并更新栈顶指针
}
“`
6、出栈操作:
“`c
int pop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty!
");
return 1; // 返回特殊值表示栈为空
}
return stack>array[stack>top]; // 弹出栈顶元素,并更新栈顶指针
}
“`
7、获取栈顶元素:
“`c
int peek(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty!
");
return 1; // 返回特殊值表示栈为空
}
return stack>array[stack>top]; // 返回栈顶元素,不更新栈顶指针
}
“`
8、释放栈内存:
“`c
void freeStack(Stack* stack) {
free(stack>array); // 释放存储元素的数组内存空间
free(stack); // 释放栈结构体内存空间
}
“`
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/418227.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复