赞
踩
输入一系列自然数(0和正整数),输入-1时表示输入结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。
第一行是一个正整数k,表示以下会有k组测试数据。
每组测试数据是一系列以空格隔开的自然数(0和正整数)。数列末尾的 -1 表示本组测试数据结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。
对于每组测试数据,输出链表中各节点的数据域。每个数据后有一个空格。每组测试数据的输出占1行。
3
1 2 3 4 5 -1
30 20 10 -1
4 2 2 1 1 2 0 2 -1
5 4 3 2 1
10 20 30
2 0 2 1 1 2 2 4
- #include <stdio.h>
- #include <stdlib.h>
-
- // 定义单链表节点结构
- struct Node {
- int data; // 数据域
- struct Node* next; // 指针域
- };
-
- // 创建链表的函数
- struct Node* createLinkedList() {
- struct Node* head = NULL;
- int value;
-
- // 输入链表元素
- while (1) {
- scanf("%d", &value);
-
- // 判断是否插入节点
- if (value == -1) {
- break;
- }
-
- // 头插法
- struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
- newNode->data = value;
- newNode->next = head;
- head = newNode;
- }
-
- return head;
- }
-
- // 遍历链表
- void traverseAndPrint(struct Node* head) {
- struct Node* current = head;
- while (current != NULL) {
- printf("%d ", current->data);
- current = current->next;
- }
- printf("\n");
- }
-
- // 删除链表释放内存
- void deleteLinkedList(struct Node* head) {
- struct Node* current = head;
- while (current != NULL) {
- struct Node* temp = current;
- current = current->next;
- free(temp);
- }
- }
-
- int main() {
- // 输入链表节点个数
- int k;
- scanf("%d", &k);
-
- // 输入元素
- for (int i = 0; i < k; i++) {
- struct Node* head = createLinkedList();
- traverseAndPrint(head);
- deleteLinkedList(head);
- }
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。