输入一个整数n,再输入n个整数,按照输入的顺序建立单链表,并遍历所建立的单链表,输出这些数据。输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个整数n,再输入n个整数。 输出格式: 对于每组测试,输出顺序链表中的各结点的数据域的值(数据之间留一个空格)。 输入样例: 5 1 2 3 4 5 输出样例: 12345 用c语言输出
时间: 2024-02-18 12:02:57 浏览: 90
好的,这是一个建立单链表并遍历输出的问题,下面给出 C 语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode* next;
};
int main() {
int n, val;
while (scanf("%d", &n) != EOF) { // 处理多组测试数据
struct ListNode *head = NULL, *tail = NULL;
for (int i = 0; i < n; i++) {
scanf("%d", &val);
struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = val;
node->next = NULL;
if (tail == NULL) { // 如果链表为空,头尾节点都指向新节点
head = tail = node;
} else { // 否则尾节点指向新节点,更新尾指针
tail->next = node;
tail = node;
}
}
// 遍历链表并输出
struct ListNode* cur = head;
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
}
return 0;
}
```
代码中定义了一个 `ListNode` 结构体表示链表节点,其中 `val` 表示节点的值,`next` 表示指向下一个节点的指针。在主函数中,首先处理多组测试数据,然后对于每组测试数据,读入 `n` 和 `n` 个整数,按顺序建立单链表。
建立链表的过程中,我们使用 `head` 和 `tail` 分别表示链表的头节点和尾节点。如果链表为空,新节点即为头节点也是尾节点;否则,将新节点插入到尾部,然后更新尾指针。
建立好链表后,我们遍历链表并输出每个节点的值,最后记得换行。
阅读全文