题目内容:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。(用C语言编写)
时间: 2024-02-05 19:14:01 浏览: 86
以下是用 C 语言编写的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
Node *createNode(int data) {
Node *node = (Node *) malloc(sizeof(Node));
node->data = data;
node->next = NULL;
return node;
}
Node *createList() {
Node *head = NULL;
Node *tail = NULL;
int data;
scanf("%d", &data);
while (data != -1) {
Node *node = createNode(data);
if (head == NULL) {
head = node;
tail = node;
} else {
node->next = head;
head = node;
}
scanf("%d", &data);
}
return head;
}
void printList(Node *head) {
Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
Node *head = createList();
printList(head);
return 0;
}
```
首先定义了一个结构体 `Node` 表示链表中的节点,包含了数据和指向下一个节点的指针。然后定义了 `createNode` 函数用于创建一个节点,并通过 `malloc` 函数分配内存空间。
接着定义了 `createList` 函数用于创建链表,将用户输入的正整数逆序建立链表。在函数内部,先定义了头指针 `head` 和尾指针 `tail` 初始值为 `NULL`,然后通过 `scanf` 函数读取用户输入的数据,创建一个新的节点,并将其插入到链表的头部或者尾部。当用户输入 `-1` 时,表示输入结束,此时返回头指针 `head`。
最后定义了 `printList` 函数用于打印链表中的所有数据,遍历链表并依次输出节点的数据。在主函数中,先调用 `createList` 函数创建链表,然后调用 `printList` 函数打印链表中的数据。
阅读全文