单向空间后方交汇C语言程序
时间: 2024-10-17 20:12:15 浏览: 8
在C语言中,单向空间后方交汇是指一种数据结构操作的问题,通常与队列(FIFO,First In First Out)的概念相关。如果将元素想象成船只,在一个只允许从前面添加(入队)而不允许从后面删除(出队)的空间中,当两艘或多艘船同时到达队尾并尝试进入时,它们会按照后到先服务的原则依次插入,形成一种特殊的“交汇”现象。
这里是一个简单的C语言代码示例,演示如何创建一个单向队列并在后方处理交汇情况:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void enqueue(Node** head, int data) {
if (*head == NULL) {
*head = createNode(data);
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = createNode(data);
}
}
int dequeue(Node* head) {
if (head == NULL || head->next == NULL) {
printf("Queue is empty.\n");
return -1; // 返回错误码或特殊值表示空队列
} else {
int data = head->data;
Node* temp = head;
head = head->next;
free(temp); // 释放原头结点
return data;
}
}
void printQueue(Node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
Node* queue = NULL;
// 添加船只到队列
enqueue(&queue, 5);
enqueue(&queue, 10);
enqueue(&queue, 15);
// 打印后方交汇后的队列
printf("Initial queue:\n");
printQueue(queue);
// 模拟船只交汇
enqueue(&queue, 20);
printf("Queue after new arrival:\n");
printQueue(queue);
// 出队,模拟船只离开
int removedData = dequeue(queue);
printf("Removed data: %d\n", removedData);
return 0;
}
```
在这个例子中,`enqueue()`函数用于添加船只,`dequeue()`函数用于移除船只,并打印队列内容以展示后方交汇的情况。
阅读全文