c语言栈的初始化及基本操作 队列的初始化及基本操作并写出实验总结与思考
时间: 2024-02-26 12:57:51 浏览: 70
C语言栈的初始化及基本操作:
1. 栈的初始化:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
```
2. 进栈操作:
```c
int push(Stack *s, int x) {
if (s->top == MAXSIZE - 1) {
return 0; // 栈满
}
s->data[++(s->top)] = x;
return 1;
}
```
3. 出栈操作:
```c
int pop(Stack *s, int *x) {
if (s->top == -1) {
return 0; // 栈空
}
*x = s->data[s->top--];
return 1;
}
```
队列的初始化及基本操作:
1. 队列的初始化:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front, rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
```
2. 进队列操作:
```c
int enQueue(Queue *q, int x) {
if ((q->rear + 1) % MAXSIZE == q->front) {
return 0; // 队列满
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return 1;
}
```
3. 出队列操作:
```c
int deQueue(Queue *q, int *x) {
if (q->front == q->rear) {
return 0; // 队列空
}
*x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return 1;
}
```
实验总结与思考:
在本次实验中,我学会了如何初始化和操作栈和队列。栈和队列都是非常常用的数据结构,它们可以用于很多场景,如括号匹配、表达式求值、迷宫搜索等等。在实现栈和队列的基本操作时,需要注意数据结构的定义和边界条件的判断。同时,我们还学习了如何使用结构体来定义栈和队列,这使得代码结构更加清晰。通过这次实验,我对数据结构的理解更加深入了。
阅读全文