用C语言写顺序栈的进栈,出栈,链栈的进栈,出栈
时间: 2024-10-22 11:12:15 浏览: 22
在C语言中,我们可以分别使用数组(顺序栈)和链表(链栈)来实现栈的数据结构。
**顺序栈(数组实现):**
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
// 进栈(入栈)
void push(Stack *stack, int value) {
if (stack->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
stack->data[stack->top++] = value;
}
// 出栈(出栈)
int pop(Stack *stack) {
if (stack->top == 0) {
printf("Stack underflow.\n");
return -1; // 返回错误值表示空栈
}
return stack->data[--stack->top];
}
```
**链栈(链表实现):**
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct {
Node* top;
} Stack;
// 链栈的头节点
Node* head;
// 进栈(入栈)
void push(Stack *stack, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = stack->top;
stack->top = newNode;
}
// 出栈(出栈)
int pop(Stack *stack) {
if (stack->top == NULL) {
printf("Stack underflow.\n");
return -1;
}
int value = stack->top->data;
Node* temp = stack->top;
stack->top = stack->top->next;
free(temp);
return value;
}
```
阅读全文