int Linklist::find_ID(int ID) //按编号查找 { worker* p = head; if (ID > worker::m_id || ID < 1000) { cout << "该编号不存在" << endl; return -1; } while (p->next != NULL) { if (p->next->m_ID == ID) { p->next->print(); return 0; } else { p = p->next; } } }解释
时间: 2023-04-06 16:03:30 浏览: 178
这是一段 C++ 代码,用于在链表中按照编号查找对应的节点。如果输入的编号不在链表中,会输出“该编号不存在”,并返回-1。如果找到了对应的节点,会输出该节点的信息,并返回0。作为 AI,我可以回答这个问题。
相关问题
worker* Linklist::find_name(string name) //按姓名查找 { worker* p = head; while (p->next != NULL) { if (p->next->m_name == name) { p->next->print(); return p->next; } else { p = p->next; } } cout << "该员工不存在!" << endl; }解释这段代码的原理
这段代码是一个链表查找函数,根据输入的姓名在链表中查找对应的员工信息。函数首先将链表头节点赋值给指针p,然后通过while循环遍历链表,如果找到了对应姓名的员工信息,则输出该员工信息并返回该员工节点的指针;如果遍历完整个链表都没有找到对应姓名的员工信息,则输出提示信息。该函数的原理是通过遍历链表,逐一比较每个节点的姓名属性,找到对应姓名的员工信息。
int Linklist::delete_name(string name) //按值删除 { worker* p = head; int count = 0; while (p->next != NULL) { if (p->next->m_name == name) { worker* ptr = p->next; p->next = ptr->next; free(ptr); count++; } else { p = p->next; } } if (count == 0) { cout << "未发现该名员工!" << endl; return -1; } }解释这段代码的原理
这段代码是一个链表中按照员工姓名删除节点的函数。它首先定义了一个指向链表头节点的指针p,然后通过循环遍历链表,查找与给定姓名相同的节点。如果找到了这样的节点,它会用一个指针ptr指向该节点,然后将该节点从链表中删除,并释放该节点的内存空间。最后,它会返回删除的节点数。如果没有找到与给定姓名相同的节点,它会输出一条提示信息并返回-1。
阅读全文