逆序数据建立链表:输入若干个正数(输入-1为结束标志),要求按输入数据的逆序建立一个链表并输出。试编写相应程序。
时间: 2024-03-18 07:40:46 浏览: 94
好的,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
//链表节点结构体
typedef struct node {
int data;
struct node *next;
} Node;
//逆序建立链表
Node* createList() {
Node *head = NULL;
int data;
scanf("%d", &data);
while (data != -1) {
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = head;
head = newNode;
scanf("%d", &data);
}
return head;
}
//输出链表
void printList(Node *head) {
Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
printf("请输入若干个正数,以-1结束输入:\n");
Node *head = createList();
printf("逆序链表为:\n");
printList(head);
return 0;
}
```
在上面的代码中,我们首先定义了一个链表节点结构体Node,并定义了逆序建立链表的函数createList和输出链表的函数printList。在createList函数中,我们从标准输入中读取若干个正数,直到读取到-1为止。对于每个读入的数据,我们新建一个节点,将其插入到链表的头部。最后返回链表的头节点。在printList函数中,我们遍历整个链表,输出每个节点的数据。
在main函数中,我们先输出提示信息,然后调用createList函数建立逆序链表,并调用printList函数输出链表。
阅读全文