新聞中心
在C語言中,可以使用數(shù)組或鏈表來實現(xiàn)棧,下面將詳細介紹如何使用數(shù)組實現(xiàn)棧,并提供相應(yīng)的代碼示例。

1、定義棧結(jié)構(gòu)體:
“`c
typedef struct {
int top; // 棧頂指針
int capacity; // 棧的容量
int* array; // 存儲元素的數(shù)組
} 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、釋放棧內(nèi)存:
“`c
void freeStack(Stack* stack) {
free(stack>array); // 釋放存儲元素的數(shù)組內(nèi)存空間
free(stack); // 釋放棧結(jié)構(gòu)體內(nèi)存空間
}
“`
本文題目:c語言怎么使用棧
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dhioojc.html


咨詢
建站咨詢
