先入先出(FIFO)程序可以用多种编程语言实现。以下是几种不同语言的示例:
Java 示例
```java
import java.util.LinkedList;
public class FIFO {
public static void main(String[] args) {
LinkedList queue.add(8); queue.add(9); queue.add(10); int outNumber = 12; // 模拟出库 for (int i = 0; i < queue.size(); i++) { int number = queue.get(i); int resetNumber = number - outNumber; System.out.println("循环次数: " + (i + 1)); if (resetNumber < 0) { // 库存数量不充足 outNumber -= number; System.out.println(0); } else { System.out.println("剩余数量: " + (number - outNumber)); break; } } } } ``` C 语言示例 ```c include include define MAX_SIZE 10 typedef struct { int data[MAX_SIZE]; int front, rear; } Queue; void enqueue(Queue *q, int data) { if (isFull(q)) { printf("队列已满,无法入队。\n"); return; } q->rear = (q->rear + 1) % MAX_SIZE; q->data[q->rear] = data; } void dequeue(Queue *q, int *data) { if (isEmpty(q)) { printf("队列为空,无法出队。\n"); return; } *data = q->data[q->front]; q->front = (q->front + 1) % MAX_SIZE; } int isFull(Queue *q) { return (q->rear + 1) % MAX_SIZE == q->front; } int isEmpty(Queue *q) { return q->front == q->rear; } int main() { Queue q; int data, choice; init(&q); while (1) { printf("1. 入队\n2. 出队\n3. 退出\n选择操作: "); scanf("%d", &choice); switch (choice) { case 1: printf("请输入要入队的数据: "); scanf("%d", &data); enqueue(&q, data); break; case 2: dequeue(&q, &data); printf("出队数据: %d\n", data); break; case 3: return 0; default: printf("无效选择,请重新选择。\n"); } } } ``` C++ 示例(使用 `std::queue`) ```cpp include include int main() { std::queue q.push(8); q.push(9); q.push(10); int outNumber = 12; // 模拟出库 while (!q.empty()) { int number = q.front(); q.pop(); int resetNumber = number - outNumber; std::cout << "循环次数: " << (q.size() + 1) << std::endl; if (resetNumber < 0) { // 库存数量不充足 outNumber -= number; std::cout << "0" << std::endl; } else { std::cout << "剩余数量: " << (number - outNumber) << std::endl; break; } } return 0; } ``` 物料管理程序示例