栈和队列是计算机科学中两种基本的数据结构,它们在算法设计和程序开发中具有广泛的应用,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]; }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/411414.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复