写一个栈和队列的实现代码
时间: 2023-08-31 08:43:45 浏览: 124
### 回答1:
好的,我可以回答这个问题。以下是栈和队列的实现代码:
栈的实现代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Stack is full.\n");
return;
}
s->top++;
s->data[s->top] = value;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return -1;
}
int value = s->data[s->top];
s->top--;
return value;
}
队列的实现代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = ;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
void enqueue(Queue *q, int value) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return value;
}
希望这个回答对你有帮助!
### 回答2:
栈(Stack)和队列(Queue)是两种常见的数据结构,它们都是线性结构,但在操作方式上有所不同。
栈的特点是“先进后出”(Last-In-First-Out, LIFO),类似于一摞盘子。栈的基本操作包括入栈(push)、出栈(pop)、获取栈顶元素(top)等。以下是一个栈的实现代码:
```python
class Stack:
def __init__(self):
self.stack = []
def push(self, value):
self.stack.append(value)
def pop(self):
if not self.isEmpty():
return self.stack.pop()
else:
return None
def top(self):
if not self.isEmpty():
return self.stack[-1]
else:
return None
def isEmpty(self):
return len(self.stack) == 0
```
队列的特点是“先进先出”(First-In-First-Out, FIFO),类似于排队。队列的基本操作包括入队(enqueue)、出队(dequeue)、获取队首元素(front)等。以下是一个队列的实现代码:
```python
class Queue:
def __init__(self):
self.queue = []
def enqueue(self, value):
self.queue.append(value)
def dequeue(self):
if not self.isEmpty():
return self.queue.pop(0)
else:
return None
def front(self):
if not self.isEmpty():
return self.queue[0]
else:
return None
def isEmpty(self):
return len(self.queue) == 0
```
以上是用Python编写的栈和队列的简单实现代码,你可以通过调用这些方法来实现栈和队列的各种操作。
### 回答3:
栈是一种具有“后进先出”(Last In First Out, LIFO)特性的数据结构,而队列则是具有“先进先出”(First In First Out, FIFO)特性的数据结构。以下是栈和队列的实现代码示例:
栈的实现代码如下:
```python
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
return None
def peek(self):
if not self.is_empty():
return self.stack[-1]
else:
return None
def is_empty(self):
return len(self.stack) == 0
def size(self):
return len(self.stack)
```
队列的实现代码如下:
```python
class Queue:
def __init__(self):
self.queue = []
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0)
else:
return None
def front(self):
if not self.is_empty():
return self.queue[0]
else:
return None
def is_empty(self):
return len(self.queue) == 0
def size(self):
return len(self.queue)
```
以上代码示例分别使用了Python列表来实现栈和队列的功能。栈使用列表的append()方法进行入栈操作,pop()方法进行出栈操作;队列使用列表的append()方法进行入队操作,pop(0)方法进行出队操作。通过判断列表长度是否为0来判断栈或队列是否为空。栈的peek()方法可以查看栈顶元素,队列的front()方法可以查看队首元素。
阅读全文
相关推荐














