wxcbsd123 2023-06-10 09:34 采纳率: 87.5%
浏览 34
已结题

c++链表删除指定元素

给定N个整数,将这些整数中与M相等的删除
假定给出的整数序列为:1,3,3,0,-3,5,6,8,3,10,22,-1,3,5,11,20,100,3,9,3
应该将其放在一个链表中,链表长度为20
要删除的数是3,删除以后,链表中只剩14个元素:1 0 -3 5 6 8 10 22 -1 5 11 20 100 9

要求:必须使用链表,不允许使用数组,也不允许不删除元素直接输出
程序中必须有链表的相关操作:建立链表,删除元素,输出删除后链表中元素,释放链表。
不符合要求的程序即使通过,也会算作0分


#include<bits/stdc++.h>
using namespace std;
struct Node
{
    int data;
    Node *next;
};
Node *head,*p,*r;
int x;
int main()
{
    int n,m,i;
    head=new Node;
    r=head;
    cin>>n;
    i=n;
    while(i>0)
    {
        cin>>x;
        p=new Node;
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=p;
        i--; 
    }
    cin>>m;
    p=head->next;
    do
    {
        if(p->next->data==m)
        {
            Node *s;
            s=p->next;
            p->next=p->next->next;
            free(s);    
        }
        p=p->next;
    }while(p->next!=NULL);
    p=head->next;
    do
    {
        cout<<p->data<<" ";
        p=p->next;
    }while(p->next!=NULL);
    return 0;
}

没法子输出。

  • 写回答

4条回答 默认 最新

  • 新_兰 2023-06-10 10:11
    关注

    输出应该还是有的吧,只不过有些错误,已在注释中写明,望采纳

    do
        {
            if(p->next->data==m)//直接判断p->next,没有判断p->data,可以在前面改为p=head
            {
                Node *s;
                s=p->next;
                p->next=p->next->next;
                free(s);    //这应该用delete,并且直接continue,不能执行p=p->next,否则两个连续目标值就会漏掉
            }
            p=p->next;
        }while(p->next!=NULL);
        p=head->next;
    

    还有一处错误,下面这段代码应该用while而不是do..while,或者将判断语句改为p!=NULL,否则无法输出最后一个元素

    do
        {
            cout<<p->data<<" ";
            p=p->next;
        }while(p->next!=NULL);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战