有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next; }; 创建一个函数create(),实现无头结点的链表,有m个结点,函数的返回值为链表的头指针。 函数接口定义: 在这里描述函数接口。例如: struct stu * create() 在这里解释接口参数。在函数中输入m,及m行数据,完成链表的创建。 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #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; } /* 请在这里填写答案 */ 输入样例: 在这里给出一组输入。例如: 2 liming 23 maming 35 输出样例: 在这里给出相应的输出。例如: liming 23 maming 35 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2023-06-04 19:02:33 浏览: 179
struct stu *create(int m){
struct stu *head, *p, *q;
head=NULL;
for(int i=1;i<=m;i++){
p=(struct stu *)malloc(sizeof(struct stu));
scanf("%s %d",p->name,&p->no);
p->next=NULL;
if(head==NULL){
head=p;
}else{
q=head;
while(q->next!=NULL){
q=q->next;
}
q->next=p;
}
}
return head;
}
// 调用示例
int main(){
struct stu *head;
int m;
scanf("%d",&m);
head=create(m);
while(head!=NULL){
printf("%s %d\n",head->name,head->no);
head=head->next;
}
return 0;
}
相关问题
有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next;
这是一个链式结构体,其中包含了三个成员:name、no 和 next。其中,name 是一个长度为 20 的 char 数组,用来存储学生姓名;no 是一个整型变量,用来存储学号;next 是一个指向下一个结构体的指针,用来构建链表。
这个链式结构体可以用来表示一个学生信息,每个结构体代表一个学生,通过 next 指针可以将多个学生信息串联起来形成一个链表。在链表中,每个结构体代表一个节点,next 指针指向下一个节点,最后一个节点的 next 指针为 NULL,表示链表的末尾。
有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next; }; 创建一个函数create(),实现无头结点的链表,有m个结点,函数的返回值为链表的头指针。
好的,下面是实现无头结点的链表,有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 = 1; i <= m; i++) {
p = (struct stu*)malloc(sizeof(struct stu));
printf("\n请输入第%d个学生的姓名和学号: ", i);
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;
struct stu *head, *p;
printf("请输入链表的长度: ");
scanf("%d", &m);
head = create(m);
printf("\n链表各个结点的信息如下: \n");
p = head;
while (p != NULL) {
printf("%s %d\n", p->name, p->no);
p = p->next;
}
return 0;
}
```
在这个代码中,我们首先定义了一个stu结构体类型,包含了姓名,学号和指向下一个结点的指针。
然后我们创建了一个create函数,这个函数接受一个整数m,表示需要创建的链表结点数量。在这个函数中,我们首先定义了三个指针:head、p和q。head指向链表的头结点,p用于保存新创建的结点,q用于在链表中寻找最后一个结点。
然后我们通过循环m次,分别输入每个结点的信息,将其保存到新创建的结点p中。然后根据链表是否为空,将p插入到链表的末尾或者作为头结点。
最后,我们返回头结点head。
在主函数中,我们通过输入链表的长度m,调用create函数创建链表,并输出链表中每个结点的信息。
注意:在使用完链表后,需要将其释放,以避免内存泄漏。
阅读全文