逆向建表 函数create()的功能是:逆向建立动态链表,返回链表头指针head,要求从键盘倒序输入各结点的数据,当输入值为0时停止结点的建立。print函数输出链表head中各个结点的data值。请将create函数和print函数补充完整。 输入格式: 输入格式: 在一行倒序输入结点数据,以空格间隔,最后一个输入0,代表输入结束(0不成为新的结点)。 输出格式: 从第一个结点开始输出链表的每个结点的数据域,每个数据后有一个空格,最后换行,注意,如为空链表,输出就是一个换行。 输入样例: 在这里给出一组输入。例如: 9 8 7 6 5 0 输出样例: 在这里给出相应的输出。例如: 5 6 7 8 9 可以在如下程序中补充代码,也可以自行编写完整代码。 #include <stdlib.h> #define LEN sizeof(nod) typedef struct node { int data; struct node *next; }nod; nod *create() { /**/ /**/ } void print(nod *head) { /**/ /**/ } int main() { nod *head; head=/**/ /**/ //调用create函数 /**/ /**/ //调用print函数 return 0; }
时间: 2024-02-27 18:58:30 浏览: 73
可以参考下面的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct node)
struct node {
int data;
struct node *next;
};
struct node *create() {
struct node *head, *p, *q;
int num;
head = NULL;
scanf("%d", &num);
while (num != 0) {
p = (struct node *)malloc(LEN);
p->data = num;
p->next = NULL;
if (head == NULL) {
head = p;
} else {
q->next = p;
}
q = p;
scanf("%d", &num);
}
return head;
}
void print(struct node *head) {
struct node *p;
p = head;
if (p == NULL) {
printf("\n");
return;
}
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
struct node *head;
head = create();
print(head);
return 0;
}
```
输入格式:
在一行倒序输入结点数据,以空格间隔,最后一个输入0,代表输入结束(0不成为新的结点)。
输出格式:
从第一个结点开始输出链表的每个结点的数据域,每个数据后有一个空格,最后换行,注意,如为空链表,输出就是一个换行。
输入样例:
9 8 7 6 5 0
输出样例:
5 6 7 8 9
阅读全文