c语言有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next; }; 创建一个函数create(),实现无头结点的链表,有m个结点,函数的返回值为链表的头指针。
时间: 2023-12-03 07:42:25 浏览: 140
下面是实现无头结点的链表,有m个结点,返回链表的头指针的create函数:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stu{
char name[20];
int no;
struct stu *next;
};
struct stu* create(int m){
struct stu *head, *p, *q;
int i;
head = NULL;
for (i=0; i<m; i++){
p = (struct stu *) malloc(sizeof(struct stu));
printf("请输入第%d个学生的姓名和学号:", i+1);
scanf("%s %d", p->name, &p->no);
p->next = NULL;
if (head == NULL){
head = p;
}
else{
q->next = p;
}
q = p;
}
return head;
}
int main(){
int m;
printf("请输入链表中结点的个数:");
scanf("%d", &m);
struct stu *head = create(m);
return 0;
}
```
在create函数中,首先定义了三个指针变量head、p和q,其中head指向链表的头结点,p和q用于创建新结点和遍历链表。在循环中,先创建一个新结点p,然后输入该结点的数据,将该结点添加到链表的尾部,最后将q指向该结点,再次循环时q就指向了新的结点。最后返回头结点head。
阅读全文