本题要求实现一个函数,按输入数据的逆序建立一个链表。 函数接口定义: struct ListNode *createlist(); 函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下: struct ListNode { int data; struct ListNode *next; };
时间: 2024-02-25 10:55:00 浏览: 275
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
以下是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode* next;
};
struct ListNode* createlist() {
int num;
struct ListNode* head = NULL; // 头节点指针
scanf("%d", &num);
while (num != -1) { // 输入以-1结尾
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode)); // 新建节点
newNode->data = num;
newNode->next = head; // 新节点指向头节点
head = newNode; // 头节点指向新节点
scanf("%d", &num);
}
return head;
}
```
函数首先定义一个头节点指针 `head`,表示链表的开头。然后通过循环 `scanf` 输入一系列正整数,每读入一个数就新建一个节点,将该节点的 `data` 设置为读入的数值,将该节点的 `next` 指向当前的头节点,将 `head` 指向新建的节点。最终返回头节点指针 `head`,即为逆序建立的链表的开头。
阅读全文