栈和队列是计算机科学中两种基本的数据结构,它们在算法设计和程序开发中具有广泛的应用,C语言作为一种通用的编程语言,提供了实现栈和队列的基本操作的功能,下面将详细介绍如何使用C语言实现栈和队列。
(图片来源网络,侵删)
1、栈(Stack)
栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作,栈的基本操作包括入栈(push)、出栈(pop)和查看栈顶元素(top)。
下面是使用C语言实现栈的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *stack) {
stack>top = 1;
}
// 判断栈是否为空
int isEmpty(Stack *stack) {
return stack>top == 1;
}
// 入栈
void push(Stack *stack, int value) {
if (stack>top == MAX_SIZE 1) {
printf("Stack is full!
");
return;
}
stack>data[++stack>top] = value;
}
// 出栈
int pop(Stack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty!
");
return 1;
}
return stack>data[stack>top];
}
// 查看栈顶元素
int peek(Stack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty!
");
return 1;
}
return stack>data[stack>top];
}
上述代码定义了一个Stack
结构体,包含了一个整型数组data
和一个表示栈顶位置的整数top
。init
函数用于初始化栈,将栈顶位置设置为1。isEmpty
函数用于判断栈是否为空,当栈顶位置为1时表示栈为空。push
函数用于将元素压入栈顶,如果栈已满则输出错误信息。pop
函数用于弹出栈顶元素,如果栈为空则输出错误信息并返回1。peek
函数用于查看栈顶元素,如果栈为空则输出错误信息并返回1。
2、队列(Queue)
队列是一种先进先出(FIFO)的数据结构,允许在队头和队尾进行插入和删除操作,队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队头元素(front)。
下面是使用C语言实现队列的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
// 初始化队列
void init(Queue *queue) {
queue>front = 0;
queue>rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue>front == queue>rear;
}
// 入队
void enqueue(Queue *queue, int value) {
if (queue>rear == MAX_SIZE 1) {
printf("Queue is full!
");
return;
}
queue>data[++queue>rear] = value;
}
// 出队
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty!
");
return 1;
}
return queue>data[queue>front++];
}
// 查看队头元素
int peek(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty!
");
return 1;
}
return queue>data[queue>front];
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)