6-3 链表的基本操作-创建一个链表 分数 10 作者 李志聪 单位 哈尔滨师范大学 有一链式结构,定义如下 : 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-05-25 09:01:30 浏览: 202
输入:
3
Alice 1
Bob 2
Charlie 3
输出:
Alice 1
Bob 2
Charlie 3
函数实现:
struct stu * create(){
int m;
scanf("%d",&m);
struct stu *head,*p,*temp;
head=NULL;
while(m--){
temp=(struct stu *)malloc(sizeof(struct stu));
scanf("%s%d",temp->name,&temp->no);
temp->next=NULL;
if(head==NULL) head=temp;
else{
p=head;
while(p->next!=NULL)
p=p->next;
p->next=temp;
}
}
return head;
}
相关问题
6-1 链表的基本操作-创建一个链表 分数 10 作者 李志聪 单位 哈尔滨师范大学 有一链式结构,定义如下 : 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;
// 循环创建m个结点
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;
// 如果是第一个结点,让head指向它
if(head == NULL){
head = p;
}
else{
q->next = p; // 让上一个结点的next指向当前结点
}
q = p; // 记录当前结点,方便下一次循环使用
}
return head; // 返回链表头指针
}
// 测试代码
int main(){
int m = 3; // 创建3个结点
struct stu *head = create(m); // 创建链表
struct stu *p = head;
// 遍历链表并输出每个结点的信息
while(p != NULL){
printf("%s %d\n", p->name, p->no);
p = p->next;
}
return 0;
}
```
希望可以帮到您!
链表的基本操作-创建一个链表 分数 10 作者 李志聪 单位 哈尔滨师范大学 有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next; }; 创建一个函数create(),实现无头结点的链表,有m个结点,函数的返回值为链表的头指针。 函数接口定义: 在这里描述函数接口。例如: struct stu * create()
函数接口定义如下:
```C
struct stu *create(int m);
```
函数说明:
该函数的作用是创建一个无头结点的链表,链表包含m个结点,函数返回链表的头指针。
参数说明:
- m:整型,表示链表中结点的个数。
返回值说明:
- 返回结构体指针类型,指向链表的头结点。
函数实现:
```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("请输入第%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");
p = head;
while(p != NULL){
printf("姓名:%s,学号:%d\n", p->name, p->no);
p = p->next;
}
return 0;
}
```
上述代码首先定义了一个结构体类型`struct stu`,包含三个成员变量:姓名、学号和指向下一个结点的指针。然后定义了一个函数`create`,该函数的作用是创建一个无头结点的链表,链表包含m个结点,函数返回链表的头指针。在函数中,首先定义了三个指针类型的变量:head、p和q。其中head用于指向链表的头结点,p用于指向新创建的结点,q用于指向链表中最后一个结点。然后利用for循环依次创建m个结点,每次创建一个结点时,首先动态申请一段内存空间,然后从键盘中输入该结点的姓名和学号,将这些信息存储到结构体变量中,将该结点连接到链表中。在连接结点时,需要判断链表是否为空,如果为空,则将head指向新创建的结点;如果不为空,则将上一个结点的next指针指向新创建的结点。最后返回链表的头指针。在主函数中,首先从键盘中输入链表中结点的个数m,然后调用create函数创建链表,将返回的头指针赋值给head变量。最后遍历链表,输出每个结点的信息(姓名、学号)。
阅读全文