逆向建表 函数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-25 21:56:22 浏览: 114
010 数据结构逆向—链表1
下面是完整的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(nod)
typedef struct node {
int data;
struct node *next;
} nod;
nod *create() {
nod *head = NULL, *p1, *p2;
int num;
scanf("%d", &num);
while (num != 0) {
p1 = (nod *)malloc(LEN);
p1->data = num;
if (head == NULL) {
head = p1;
} else {
p2->next = p1;
}
p2 = p1;
scanf("%d", &num);
}
if (head != NULL) {
p2->next = NULL;
}
return head;
}
void print(nod *head) {
nod *p;
p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
nod *head;
head = create();
print(head);
return 0;
}
```
阅读全文