数据结构中的 FIFO 方法2025年3月17日 | 阅读32分钟 FIFO 的全称是 先进先出,在这种方法中,我们将数据元素输入到数据结构中;最后添加到任何数据结构中的数据元素将最后被移除,而首先添加的元素将首先被移除。在这里,我们平等对待数据元素;首先进入的元素将首先有机会离开。我们称之为先来先服务,它是通过一种名为队列的数据结构实现的。 理解 FIFO 原理的最佳示例是排队购买电影票,前面有很多人,我们别无选择,只能等待。如果我们观察上面的例子,我们可以清楚地看到,我们将排在前面的人之后,并被视为先来先服务。
如前所述,这种方法称为先进先出方法或 FIFO。 FIFO 方法的应用FIFO 的应用如下: 1)数据结构队列是一种基于 FIFO 方法的线性数据结构,其中数据元素通过队尾进入队列,并通过队首删除元素。 FIFO 方法主要用于网络桥接器、交换机和路由器。 它进一步被归类为线性队列。 线性队列线性队列是一种基于 FIFO(先进先出)原理的线性数据结构,其中数据从队尾进入,从队首删除。线性队列被认为是简单队列,当我们讨论队列时,默认是指线性队列。我们将在后面的部分更详细地讨论这些端点。 其他示例,如 ->
线性队列的操作 线性队列中有一些基本操作如下 ->
线性队列的两个端
线性队列的实现方法有各种实现队列的方法。
使用数组实现线性队列这里我们讨论使用数组实现队列 -> 队列可以很容易地通过使用线性数组来实现。如前所述,队列有队首和队尾指针,可以从中删除和插入数据元素。 步骤:
![]() 入队操作算法 步骤 1 - 检查 REAR == FRONT。 步骤 2 - 如果上述语句成立,则称这种情况为溢出,无法进一步插入数据元素。 步骤 3 - 如果不成立,则
出队操作算法 步骤 1 - 检查 FRONT = REAR + 1。 步骤 2 - 如果上述语句成立,则
步骤 3 - 如果不成立,则
步骤 4 - 然后设置 FRONT = FRONT + 1,它指向下一个数据元素。 Peek 操作算法 步骤 1 - 检查 FRONT = REAR + 1。 步骤 2 - 如果上述语句成立,则显示消息;队列为空。 步骤 3 - 如果不成立,则
使用队列(数组实现)在 C 编程语言中实现 FIFO 方法上述程序的输出是 ![]() 使用数组(队列实现)在 C++ 编程语言中实现 FIFO 方法上述程序的输出是 ![]() 使用队列在 Java 编程语言中实现 FIFO 方法上述程序的输出是 Queue is Empty 20 <-- 30 <-- 40 <-- 50 <-- Queue is full 20 <-- 30 <-- 40 <-- 50 <-- after two node deletion 40 <-- 50 <-- Front Element is: 40 使用队列在 Python 编程语言中实现 FIFO 方法上述程序的输出是 Elements of queue - [ 0, 1, 2, 3, 4 ] removed element - 0 [ 1, 2, 3, 4 ] Peek value of queue - 1 Size of queue - 4 使用队列在 C# 编程语言中实现 FIFO 方法上述程序的输出是 Elements of queue - [ 0, 1, 2, 3, 4 ] removed element - 0 [ 1, 2, 3, 4 ] Peek value of queue - 1 Size of queue - 4 使用队列在 JavaScript 编程语言中实现 FIFO 方法上述程序的输出是 Elements of queue - [ 0, 1, 2, 3, 4 ] removed element - 0 [ 1, 2, 3, 4 ] Peek value of queue - 1 Size of queue - 4 使用栈(队列实现)在 C 编程语言中实现 FIFO 方法上述程序的输出是 Queue is empty !! Queue is full !! 20 30 40 50 使用栈(队列实现)在 C++ 编程语言中实现 FIFO 方法上述程序的输出是 Queue is empty !! Queue is full !! 20 3 40 50 循环队列使用循环队列实现 FIFO 方法循环队列也是一种重要的队列类型。它与线性队列相似,但有一些变体。循环队列的末端位置连接回起始位置,形成类似圆形的结构并构成一个圆。循环队列也基于先进先出(FIFO)原理。它也称为“环形缓冲区”。 正如我们之前所见,在线性队列中,当 REAR 到达末端且 FRONT 也到达末端时,无法进一步插入数据元素。队列仍然为空,但它显示队列已满,因此引入了循环的概念来解决上述问题。在循环队列中,此问题不会出现。我们将在下面的部分中进一步详细讨论。 基于 FIFO 原理的数据结构是栈。我们主要对其进行两种操作:push 和 pop。Push 操作用于将数据元素压入栈,pop 操作用于从栈中弹出数据元素。 线性队列中有一些基本操作如下 ->
循环队列的两个端 在循环队列中,有一个类似圆形的结构;因此没有两个端点区分开,但为了区分数据元素的插入和删除标准,我们仍然引用这两个端点。
使用数组实现循环队列循环队列可以很容易地通过使用数组来实现。它基于循环增量过程。如前所述,它有两个指针,队首和队尾。从队尾可以插入数据元素。如果队尾指针到达末端,它会再次递增到队列的初始位置,以便还可以进行进一步插入,因此这表示一个增量过程。 从队首可以删除数据元素。如果队首指针到达末端,它会返回到队列的初始位置,以便可以进行进一步删除。 使用队列大小的模运算执行循环增量。 步骤:
![]() 循环队列的实现 入队操作算法 步骤 1 - 检查 FRONT == 0 && REAR == (n-1) || REAR == (FRONT - 1) % (n-1)。 步骤 2 - 如果上述语句成立,则称这种情况为溢出,无法进一步插入数据元素。 步骤 3 - 否则,如果 FRONT == -1,则
步骤 4 - 否则,如果 REAR == (n-1) && FRONT != 0
步骤 5 - 否则
出队操作算法 步骤 1 - 检查 FRONT == -1。 步骤 2 - 如果上述语句成立,则
步骤 3 - 如果不成立,则
步骤 4 - 然后设置 FRONT = FRONT + 1,它指向下一个数据元素。 步骤 5 - 如果 FRONT == REAR,则设置 FRONT = -1 和 REAR = -1。 步骤 6 - 否则,如果 FRONT == n-1,则设置 FRONT = 0。 使用循环队列在 C 编程语言中实现 FIFO 方法上述程序的输出是 Enqueue value 20 successfully !! Enqueue value 30 successfully !! Enqueue value 40 successfully !! Enqueue value 60 successfully !! Enqueue value 70 successfully !! Queue is full !! Deleting value: 20 Deleting value: 30 Deleting value: 40 Deleting value: 60 使用结构(循环队列实现)在 C++ 编程语言中实现 FIFO 方法上述程序的输出是 Enqueue value 7 successfully !! Enqueue value 11 successfully !! Enqueue value 4 successfully !! Enqueue value 6 successfully !! Enqueue value 7 successfully !! Queue is full !! Deleting value: 7 Deleting value: 11 Deleting value: 4 Deleting value: 6 使用数组(循环队列)在 Java 编程语言中实现 FIFO 方法上述程序的输出是 Elements in Circular Queue are : 14 22 13 8 Deleted value = 14 Deleted value = 22 Elements in Circular Queue are : 13 8 Elements in Circular Queue are : 13 8 9 20 5 Queue is Full !! 使用数组(循环队列)在 Python 编程语言中实现 FIFO 方法上述程序的输出是 Elements in Circular Queue are : 4 22 3 -6 Deleted value = 4 Deleted value = 22 Elements in Circular Queue are : 3 -6 Elements in Circular Queue are : 3 -6 19 2 15 Queue is Full !! 使用链表(循环队列)在 C 编程语言中实现 FIFO 方法上述程序的输出是 Enqueue value is: 20 Enqueue value is: 30 Enqueue value is: 40 Deleting value: 20 Deleting value: 30 Deleting value: 40 Queue is empty !! Enqueue value is: 60 Enqueue value is: 50 Enqueue value is: 70 Queue is full !! 使用链表(循环队列)在 C++ 编程语言中实现 FIFO 方法上述程序的输出是 Enqueue value is: 20 Enqueue value is: 30 Enqueue value is: 40 Deleting value: 20 Deleting value: 30 Deleting value: 40 Queue is empty !! Enqueue value is: 60 Enqueue value is: 50 Enqueue value is: 70 Queue is full !! 使用链表(循环队列)在 Java 编程语言中实现 FIFO 方法上述程序的输出是 Elements in Circular Queue are : 10 2 16 Deleted value = 10 Deleted value = 2 Elements in Circular Queue are : 16 Elements in Circular Queue are : 16 19 7 使用链表(循环队列)在 Python 编程语言中实现 FIFO 方法上述程序的输出是 Elements in Circular Queue are : 10 2 16 Deleted value = 10 Deleted value = 2 Elements in Circular Queue are : 16 Elements in Circular Queue are : 16 19 7 循环队列相对于线性队列的优点
下一主题数据结构中的连通图 |
我们请求您订阅我们的新闻通讯以获取最新更新。