首先要得到删除的那个节点.. 然后根据节点删除链表..


1 cout<<"请输入要删除的学生号 结束输入 -1 > ";
2 cin>>findword;
3 if (findword == -1)
4 break;
5 else{
6 ptr = head;
7 find = 0;
8 while(ptr != NULL)
9 {
10 if (ptr->num == findword)
11 {
12 *ptr = del_ptr(head, ptr);//返回:头指针
13 find++;
14 }
15 ptr = ptr->next;
16 }
17 if (find == 0)
18 cout<<"没有找到.."<<endl;
19 }


1 //删除节点
2 list del_ptr(list *head, list *ptr) //head链表头 ptr要删除的节点
3 {
4 list *top;
5 top = head;
6 if (ptr == head)//删除的节点在表头
7 {
8 head = head->next;
9 cout<<"已经删除第 "<<ptr->num<<" 号学生 姓名:"<<ptr->name<<endl;
10 }
11 else{
12 while(top->next != ptr)//找到删除节点的前面一个位置
13 top = top->next;
14 if (ptr->next == NULL)//删除的节点在最后一个
15 {
16 top->next = NULL;
17 cout<<"已经删除第 "<<ptr->num<<" 号学生 姓名:"<<ptr->name<<endl;
18 }else{//在表中的任意一点
19 top->next = ptr->next;
20 cout<<"已经删除第 "<<ptr->num<<" 号学生 姓名:"<<ptr->name<<endl;
21 }
22 }
23 delete []ptr;//删除..
24 return *head;
25 }