小黄JY_H 2022-11-21 22:46 采纳率: 66.7%
浏览 3

如果链表中有两个与key值相等的元素,怎么才能把两个都删除,而不是只删除第一个与Key值相等的元素

单链表按值删除
如果链表中有两个与key值相等的元素,怎么才能把两个都删除,而不是只删除第一个与Key值相等的元素

//5、屏幕提示后,在以DLList为头指针的线性表中删除这个元素key
//屏幕显示删除成功与否的信息
void del(Node *DLList1,int key)
{
    //删除以DLList1为头结点的单链表中值为key的第一个结点 
    Node *p=DLList1,*q=DLList1->next;
    printf("输入需删除的元素值:\n");
    scanf("%d",&key);
    int flag=0;
    while (q!=NULL&&q->data!=key) {
        p=q;
        q=q->next;
        flag++;
    } //p始终指向q的前一个结点
    if (q->data==key) {
        p->next=q->next;
        free(q);
        flag++;
        printf("删除成功\n比较次数:%d\n",flag);
    }else{
        printf("所要删除的结点不存在!\n");
    }    
    wait();
}
  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 创建了问题 11月21日

      悬赏问题

      • ¥15 房号如何排序,sql或算法
      • ¥15 macOS使用IDEA 2022.2.4打包JDK6项目报错
      • ¥20 OpenCV-Python简单轮廓寻找
      • ¥20 使用matlab进行含参数的最优化求解及数值模拟
      • ¥20 MATLAB找出一维变量中的局部极大值和局部极小值,并进行运算
      • ¥15 有Chang求三维杆单元几何非线性分析matlab代码
      • ¥50 使用unity easyar录屏功能。录屏视频整体色调很暗
      • ¥50 pyinstaller 打包问题
      • ¥15 无法使用cnssc调取网页数据
      • ¥15 Pycharm安装en_core_web_sm失败出现Could not find a version that satisfies the requirement spacy报错