正向建立单链表。题目描述 题目内容:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。 输入格式:一行内输入若干个正整数,之间用空格隔开,并以-1结束。 输出格式:一行内输出建立的单链表数据结果,之间用两个分隔符 -- 隔开,结束标志-1不输出。
时间: 2023-06-25 15:03:42 浏览: 113
以下是 Python 代码实现:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
head = None
while True:
num = int(input())
if num == -1:
break
new_node = Node(num)
new_node.next = head
head = new_node
result = ""
while head:
result += str(head.data) + " -- "
head = head.next
print(result[:-4]) # 去掉最后的 --
```
使用链表来实现,每次输入一个数时就创建一个新的节点,将其插入到链表的头部,这样最后得到的链表是按照输入数据的逆序建立的。然后遍历链表,将每个节点的数据转换成字符串并拼接到结果字符串中,末尾的 `--` 需要去掉。
相关问题
正向建立单链表。题目描述\n\n题目内容:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。\n\n\n输入格式:一行内输入若干个正整数,之间用空格隔开,并以-1结束。\n\n输出格式:
题目描述:
正向建立单链表。
题目内容:输入若干个正整数(输入-1为结束标志),要求按输入的逆序建立一个单链表,并输出该单链表。
输入格式:一行内按逆序输入若干正整数,以-1为结束标志。
输出格式:输出格式与建立链表的方式无关。
输入格式:一行内按逆序输入若干正整数,以-1为结束标志。
输出格式:输出格式与建立链表的方式无关。
解答:对于输入的每个正整数,我们可以按照“头插法”依次将元素插入链表中。因此,我们可以使用一个头指针,每次向其前面插入一个元素即可。如果输入-1,则说明已经输入完毕,此时应该输出链表的内容。具体实现过程可以参考下面的代码:
n = int(input()) # 输入第一个正整数
head = None # 头节点初始化为空
while n != -1:
node = {'data': n, 'next': head} # 新建节点,其指向头节点
head = node # 更新头节点
n = int(input()) # 输入下一个正整数
# 输出链表
while head:
print(head['data'], end=' ')
head = head['next']
用C语言实现题目内容:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。
以下是使用C语言实现题目内容的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct node {
int data; // 数据域
struct node *next; // 指针域
} Node, *LinkList;
// 创建新节点
Node *createNode(int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 在链表头部插入节点
void insertNode(LinkList *head, Node *newNode) {
newNode->next = *head;
*head = newNode;
}
// 逆序建立单链表
LinkList createList() {
LinkList head = NULL;
int data = 0;
printf("请输入若干个正整数,以-1结束:\n");
scanf("%d", &data);
while (data != -1) {
Node *newNode = createNode(data);
insertNode(&head, newNode);
scanf("%d", &data);
}
return head;
}
// 输出单链表
void printList(LinkList head) {
printf("逆序输出单链表:\n");
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
LinkList list = createList();
printList(list);
return 0;
}
```
运行结果:
```
请输入若干个正整数,以-1结束:
1 2 3 4 5 -1
逆序输出单链表:
5 4 3 2 1
```
阅读全文