新人求解,这是哪里错了?

有大佬知道这是什么原因么?

你能不能将代码贴出来,你截图这样别人也运行不了你的代码呀~,总不能看着图一个一个敲吧

你这个L指针有问题,是空的,你main中后面应该用stu指针才行。如果想让L有效,那么createfromhead的参数要用 linklist *L

int main(void)
{
    linklist L,stu;
    stu = createfromhead(L);
    int x;
    scanf("%d",&x);
    Rdelete(stu,x);
    printf(stu);
}

 

代码没问题呀,编译代码通过,测试如下

/**************************************************

设计一个递归算法,删除不带头结点的单链表L中所有为x的结点

***************************************************/

 

#include<stdio.h>

#include<stdlib.h>//molloc函数free函数要用到的库函数

 

typedef struct LNode{

    int data;

    struct LNode *next;

}LNode,*linklist;

 

linklist createfromhead(LNode *L);

 

void Rdelete(LNode *L,int x);

 

void print(LNode *L);


 

int main(void)

{

    linklist L,stu;

    stu=createfromhead(L);

    int x;

    printf("请输入要删除的值: \n");

    scanf("%d",&x);

    Rdelete(L,x);

    print(L);

}

void Rdelete(LNode *L,int x)//递归按值删除

{

    LNode *p;

    if(L==NULL)

    {

        printf("所要插入的链表不合法");

        return;

    }

    if(L->data==x)

    {

        p=L;

        L=L->next;

        free(p);

        Rdelete(L,x);

    }

    else

    {

        Rdelete(L->next,x);

    }

    

}

 

linklist createfromhead(LNode *L)//头插法

{

    LNode *s;

    int flag = 1,c;

    L=NULL;

    while(flag)

    {

        scanf("%d",&c);

        if(c!=-1)

        {

            s=(linklist)malloc(sizeof(LNode));

            s->data=c;

            s->next=L;

            L=s;

        }

        else

        {

            flag=0;

        }

 

    }

    return L;

}

void print(LNode *L)//递归打印

{

    printf("%d",L->data);

    L=L->next;

    print(L);

}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632