用C语言写代码:先将键盘输入的一组整数依次存入循环链表(尾插法),然后删除头部第一个元素,最后将其余元素逆序输出。 样例输入 4 2 8 6 9 样例输出 9 8 6 2
时间: 2025-01-04 12:38:00 浏览: 11
首先,我们需要创建循环链表的数据结构,包括节点结构体和链表头结点。然后,我们将按照提供的步骤编写代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化循环链表的函数
Node* createList(int arr[], int n) {
Node* head = (Node*)malloc(sizeof(Node));
head->data = arr[0];
head->next = head;
for (int i = 1; i < n; ++i) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = head->next;
head->next = newNode;
head = newNode;
}
return head;
}
// 删除并返回头部元素的函数
int deleteFirst(Node** head) {
if (*head == NULL)
return -1; // 空链表
int removedData = (*head)->data;
Node* temp = *head;
*head = (*head)->next;
free(temp);
return removedData;
}
// 逆序遍历并打印链表的函数
void printReverse(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
if (current == head)
break;
}
}
int main() {
int arr[] = {4, 2, 8, 6, 9};
int n = sizeof(arr) / sizeof(arr[0]);
Node* list = createList(arr, n);
int removedElement = deleteFirst(&list); // 删除头部元素
printf("删除后的第一个元素: %d\n", removedElement);
printf("逆序输出剩余元素: ");
printReverse(list);
return 0;
}
```
在这个程序中,我们首先通过`createList`函数将数组元素插入循环链表,接着使用`deleteFirst`函数删除头部元素,并存储其值。最后,通过`printReverse`函数逆序输出链表内容。
注意:这个代码示例假设输入数组已经存在,如果需要从标准输入读取整数,你需要修改`main`函数中的数组初始化部分。
阅读全文