补全代码中的函数,在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> #include <stdlib.h> struct stu{ char name[20]; int no; struct stu *next;}; struct stu * create(); void show(struct stu *p){ while(p){ printf("%s %d\n",p->name,p->no); p=p->next; } } int main() { struct stu *p=NULL; p=create(); show(p); return 0; } /* 请在这里填写答案 */
时间: 2024-01-13 22:03:03 浏览: 87
<stdlibh>通用实用工具-达内内部C语言PPT
好的,我来补全代码中的函数。这里我编写了链表的创建函数 create() 和节点的释放函数 free_list()。
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
struct stu{
char name[20];
int no;
struct stu *next;
};
struct stu * create(){
struct stu *head, *p, *q;
head = (struct stu*)malloc(sizeof(struct stu));
head->next = NULL;
q = head;
printf("请输入学生姓名和学号(以-1结束):\n");
while(1){
p = (struct stu*)malloc(sizeof(struct stu));
scanf("%s %d", p->name, &p->no);
if(p->no == -1){
free(p);
break;
}
q->next = p;
q = p;
}
q->next = NULL;
return head->next;
}
void free_list(struct stu *p){
struct stu *temp;
while(p){
temp = p;
p = p->next;
free(temp);
}
}
void show(struct stu *p){
while(p){
printf("%s %d\n",p->name,p->no);
p=p->next;
}
}
int main() {
struct stu *p=NULL;
p=create();
show(p);
free_list(p);
return 0;
}
```
测试示例:
输入:
```
小明 1001
小红 1002
小刚 1003
小丽 1004
-1
```
输出:
```
小明 1001
小红 1002
小刚 1003
小丽 1004
```
阅读全文