通过c语音编程实现栈的基本运算
时间: 2024-05-09 08:21:04 浏览: 16
以下是一份基本的栈实现代码,包括压栈、弹栈、查看栈顶元素、查看栈是否为空等操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
Stack* createStack() {
Stack* s = (Stack*)malloc(sizeof(Stack));
s->top = -1;
return s;
}
void push(Stack* s, int value) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow!\n");
return;
}
s->top++;
s->data[s->top] = value;
}
int pop(Stack* s) {
if (s->top == -1) {
printf("Stack underflow!\n");
return -1;
}
int value = s->data[s->top];
s->top--;
return value;
}
int peek(Stack* s) {
if (s->top == -1) {
printf("Stack is empty!\n");
return -1;
}
return s->data[s->top];
}
int isEmpty(Stack* s) {
return s->top == -1;
}
void printStack(Stack* s) {
printf("Stack: ");
for (int i = s->top; i >= 0; i--) {
printf("%d ", s->data[i]);
}
printf("\n");
}
int main() {
Stack* s = createStack();
push(s, 1);
push(s, 2);
push(s, 3);
printStack(s);
int value = pop(s);
printf("Popped value: %d\n", value);
printStack(s);
int peekValue = peek(s);
printf("Peek value: %d\n", peekValue);
printStack(s);
int empty = isEmpty(s);
printf("Is stack empty? %d\n", empty);
pop(s);
pop(s);
pop(s);
empty = isEmpty(s);
printf("Is stack empty? %d\n", empty);
return 0;
}
```
这份代码定义了一个`Stack`结构体,其中包含一个整型数组`data`和一个整型变量`top`。`top`表示栈顶元素的下标,初始值为-1,表示栈为空。
`createStack()`函数用于创建一个新的栈,返回一个指向`Stack`结构体的指针。
`push()`函数用于将一个元素压入栈中。如果栈已满,则输出"Stack overflow!"。
`pop()`函数用于弹出栈顶元素,并返回该元素的值。如果栈为空,则输出"Stack underflow!",并返回-1。
`peek()`函数用于查看栈顶元素的值,但不弹出该元素。如果栈为空,则输出"Stack is empty!",并返回-1。
`isEmpty()`函数用于判断栈是否为空,如果为空则返回1,否则返回0。
`printStack()`函数用于打印当前栈中的所有元素。
在`main()`函数中,我们首先创建一个新的栈`s`。然后依次将元素1、2、3压入栈中,并打印当前栈中的所有元素。接下来,我们将栈顶元素弹出,并打印弹出的元素的值和当前栈中的所有元素。然后查看栈顶元素的值,并再次打印当前栈中的所有元素。接下来,我们判断栈是否为空,并输出结果。最后,我们弹出剩余的元素,并再次判断栈是否为空。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)