森侃 2022-10-02 16:36 采纳率: 76.5%
浏览 88
已结题

非空双链表问题,数据结构,才开始学


#include <stdio.h>
#include <stdlib.h>

typedef struct LinkNode
{
    int data;
    struct linknode *prev,*next;
}Node,*List;
List Createlist(int n)
{
    List head=(List)malloc(sizeof(Node));
    Node *p,*q;
    int a;
    p=head;
    for(int i=0; i<n; i++)
    {
        q=(List)malloc(sizeof(Node));
        scanf("%d",&a);
        q->data=a;
        p->next=q;
        q->prev=p;
        p=q;
    }
    p->next=NULL;
    head=head->next;
    head->prev=NULL;
    return head;
}

void Delete_x(List L,int n,int x)
{
    Node *p=L;
    Node *r=L;
    for(int i=0;i<n;i++)
    {
        if(p->data==x)
        {
            r=p->next;
            p->next=r->next;
            r=r->next;
            p=r->prev;
            p=p->next;
        }
        p=p->next;
    }
    while(L)
    {
        printf("%d ",L->data);
        L=L->next;
    }
}
int main(void)
{
    int n;
    scanf("%d",&n);
    List L=Createlist(n);
    int x;
    scanf("%d",&x);
    Delete_x(&L,n,x);
    return 0;
}

有一个非空双链表L,设计一个算法删除所有值为x的结点。

【输入形式】

输入数据为两行,第一行是输入数据个数,第二行是输入数据,第三行是x的值
【输出形式】

删除值为x后的序列,以空格分隔
【样例输入】

7

1 3 5 6 8 6 7

6
【样例输出】

1 3 5 8 7

Delete_x怎样改才可以输出,实在写的我一脸懵。

  • 写回答

2条回答 默认 最新

  • X-道至简 2022-10-02 19:12
    关注

    先发现一个问题 第60行 不要&。43行改成p-prev->next = p->next. 40和41行多余的。42行改成r->prev = p. 先这么多试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • SoftwareTeacher 《编程之美》作者 2022-10-02 19:14
    关注
    
            if(p->data==x)
            {
                r=p->next;
                p->next=r->next;
                r=r->next;
                p=r->prev;
                p=p->next;
    
    

    这里你画一个双链表, 一步一步地把 p,r 指向的结构的变化写出来, 就会找到你的 bug

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 创建了问题 10月2日

悬赏问题

  • ¥60 PCDN如何使用宽带的电视业务通道拨号叠加带宽?
  • ¥15 遇到这种校园宽带网络应该怎么样解决?
  • ¥30 AXI VIP验证多余打印问题
  • ¥15 利用加权最小二乘法求某品牌手机价格指标,已按照总销量计算出权重,各类型号手机价格已知,如何求得价格指标?
  • ¥15 如何自制一个硬件钱包,有兴趣的朋友一起交流
  • ¥15 (关键词-聊天软件)
  • ¥15 求大家看看这个编程的编法没有思路啊
  • ¥20 WSL打开图形化程序子窗口无法点击
  • ¥15 Jupyter Notebook 数学公式不渲染
  • ¥20 ERR_CACHE_MISS 确认重新提交表单