while (p != NULL) { if (strcmp(p->data.jobNo, find) == 0) { break; } p = p->next; }是用来实现什么功能的
时间: 2024-02-01 09:02:05 浏览: 65
这段代码是用来在链表中查找要修改的员工信息的。
具体来说,代码使用while循环遍历链表,从链表的第一个节点开始查找,直到找到对应的员工信息或遍历完整个链表为止。在查找的过程中,使用strcmp函数比较当前节点中的员工号与用户输入的要修改的员工号是否相等,如果相等,则跳出循环,p指向的就是要修改的员工信息所在的节点;如果不相等,则将p指向下一个节点,继续查找。最终,如果找到了要修改的员工信息,则p指向该员工信息所在的节点;如果没有找到,则p为NULL。
相关问题
while (p != NULL) { if (strcmp(p->data.jobNo, find) == 0) { break; } p = p->next; }
这段代码的作用是在链表中查找要修改的员工信息。具体而言,这段代码使用while循环遍历链表,从链表的第一个节点开始查找,直到找到对应的员工信息或遍历完整个链表为止。查找的过程中,使用strcmp函数比较当前节点中的员工号与用户输入的要修改的员工号是否相等,如果相等,则跳出循环,p指向的就是要修改的员工信息所在的节点;如果不相等,则将p指向下一个节点,继续查找。最终,如果找到了要修改的员工信息,则p指向该员工信息所在的节点;如果没有找到,则p为NULL。
//修改员工信息函数 int change(Node *worker) { Node *p; char find[20]; p = worker->next; if (p == NULL) { printf("\n提示:没有资料可以修改!\n"); return 0; } printf("请输入要修改的员工号"); scanf("%s", find); while (p != NULL) { if (strcmp(p->data.jobNo, find) == 0) { break; } p = p->next; } if (p!=NULL) { int x; while (1) { printf("完成修改请输入0,否则输入非0数字进行修改!"); scanf("%d", &x); if (x == 0) { break; } printf(" 请输入新员工号: "); scanf("%s", p->data.jobNo); printf(" 请输入新员工姓名: "); scanf("%s", p->data.name); printf(" 请输入新员工性别: "); scanf("%s", p->data.sex); printf(" 请输入新员工出生年月: "); scanf("%s", p->data.birthday); printf(" 请输入新员工职务: "); scanf("%s", p->data.position); printf(" 请输入新员工工资: "); scanf("%s", p->data.salary); printf(" \n提示:该职工资料已经修改!\n "); } } else printf("\n提示:没有你要修改的资料!\n "); }
这段代码是一个修改员工信息的函数,它首先检查链表中是否有员工信息,如果没有则提示没有资料可以修改,如果有,则要求输入要修改的员工号。然后遍历链表,查找该员工号对应的节点,如果找到了,则进入一个循环,要求输入要修改的信息,直到输入0为止,输入的非0数字将被认为是要修改的信息。如果输入的0,则退出循环,提示该职工资料已经修改。如果没有找到对应的员工号,则提示没有你要修改的资料。
阅读全文