- 加入我的QQ群
- 关注我的百家号
扫描下面的二维码,“关注”我的百家号。
前面我们完整地实现了图书的创建,在我们创建图书后,可能会发现某些图书不想要了,就想把它删除。
那么,在图书链表中怎样删除指定的图书呢?
本节,我们就通过一个简单的函数来实现这个目的。
首先,我们定义一个删除函数del() ,代码如下:
void del(book*head,int number) //number是用户输入的编号{
book*first; //声明一个临时指针 if(number==head->num) //当用户输入的编号是头结点编号时,删除第1个编号 { first=head; //通过临时指针交换数据 head=head->next; //head指向下一个结点 ::head=head; //head被指明为头结点 delete first; // } while(head) //当head不为空时循环执行下面语句,直到head为空时结束循环 { if(head->next==NULL) //当head->next为空时,即没有下一个结点时,执行大括号中的语句 { cout<<"没有找到你要删除的编号,以0结束"; return; } if(head->next->num==number) //当用户输入的编号是下一个结点时,执行下面语句 { first=head->next; //first指向下一个结点,即准备要删除的结点 head->next=first->next; //上一个结点的next直接指向“下一个结点的下一个结点”,跳过下一个结点 delete first; //删除下一个结点; return; } head=head->next; //head的值不断变换,指向下一个结点; } cout<<"找不到要删除的编号。"<<endl; //head为空时返回这个值; } |
然后,在main()函数中调用该函数,如下:
int main(){
int number=0; //声明一个变量 create(); //调用创建函数 cout<<"请输入要删除的图书编号:"; cin>>number; del(head,number); //调用删除函数 bookshow(head); //调用显示函数 return 0; } |