用c语言构建链式队列插入数字1-10然后再把1给删了
时间: 2024-10-23 21:03:59 浏览: 23
在C语言中,我们可以使用结构体和指针来创建一个链式队列。这里是一个简单的例子,首先定义一个节点结构体,然后实现队列的插入和删除操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化链表
Node* createQueue() {
Node* head = NULL;
return head;
}
// 插入元素到链表尾部
void enqueue(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 删除并返回队首元素
int dequeue(Node** head) {
if (*head == NULL) {
printf("Queue is empty.\n");
return -1; // 返回一个特殊值表示删除失败
}
int removedValue = (*head)->data;
Node* temp = *head;
*head = (*head)->next;
free(temp); // 释放已删除节点
return removedValue;
}
// 主函数演示操作
int main() {
Node* queue = createQueue();
// 插入1到10
for(int i=1; i<=10; ++i) {
enqueue(&queue, i);
printf("Enqueued %d\n", i);
}
// 删除第一个元素(数字1)
int deletedNum = dequeue(&queue);
if(deletedNum != -1) {
printf("Deleted: %d\n", deletedNum);
} else {
printf("Deletion failed.\n");
}
// 打印剩余元素(从2到10)
Node* current = queue;
while(current != NULL) {
printf("Current: %d -> ", current->data);
current = current->next;
}
printf("\n");
return 0;
}
```
在这个示例中,我们首先创建了一个空的队列,然后依次将数字1到10加入队列,最后删除第一个元素(数字1),并在控制台上显示剩余元素。
阅读全文