填空补充的函数int Find(LinkList h, char* s, DataType *x) { PNode p = h->link; while (p && strcmp( )!=0 ) // 查找,注意两个参数填入时的中英文逗号的区别 { p = p->link; } if ( ) { memcpy( ,sizeof(p->stu.name));// 字符串赋值,注意两个参数填入时的中英文逗号的区别 x->score = ; return 1; } else { return 0; } } int main() { LinkList L; char chName[10]; int i,pos=1; DataType x; DataType a[5] = {{"Tom",90},{"Lily",87},{"May",92},{"Lucy",78},{"Tracy",76}}; InitLinkList(&L); for (i=0;i<5;i++) { LinkListInsert(L,pos++,a[i]); } ; // 读取待查姓名 if ( Find(L,chName,&x) == ) { printf("%s,%d\n", ); // 注意两个参数填入时的中英文逗号的区别 } else { printf("No record for %s",chName); } return 0; }
时间: 2024-01-09 15:06:10 浏览: 56
填空部分的函数和主程序如下:
```c
int Find(LinkList h, char* s, DataType *x) {
PNode p = h->link;
while (p && strcmp(p->stu.name, s) != 0) {
p = p->link;
}
if (p) {
memcpy(x->name, p->stu.name, sizeof(p->stu.name));
x->score = p->stu.score;
return 1;
} else {
return 0;
}
}
int main() {
LinkList L;
char chName[10];
int i,pos=1;
DataType x;
DataType a[5] = {{"Tom",90},{"Lily",87},{"May",92},{"Lucy",78},{"Tracy",76}};
InitLinkList(&L);
for (i=0;i<5;i++) {
LinkListInsert(L,pos++,a[i]);
}
printf("Please input the name to search: ");
scanf("%s", chName);
if (Find(L,chName,&x) == 1) {
printf("%s,%d\n", x.name, x.score);
} else {
printf("No record for %s",chName);
}
return 0;
}
```
其中,函数`Find`中的第一个空需要填入`p->stu.name`和`s`,表示比较指向节点的学生姓名和待查找姓名。第二个空需要填入`x->name`和`sizeof(p->stu.name)`,表示将指向节点的学生姓名复制到待查找结果的学生姓名中。第三个空需要填入`x->score`,表示将指向节点的学生成绩复制到待查找结果的学生成绩中。主程序中,需要读入待查找的姓名,并且在`printf`函数中需要填入`x.name`和`x.score`,表示输出待查找结果的学生姓名和成绩。
阅读全文