析木60 2021-06-02 19:44 采纳率: 50%
浏览 22
已采纳

求教!!!!!!!!!!!!!!!!!

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

设计一个递归算法,删除不带头结点的单链表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("请输入要删除的值:");

    scanf("%d",&x);

    Rdelete(stu,x);

    print(stu);

}

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

{

    LNode *p;

    if(L==NULL)

    {

        return;

    }

    if(L->data==x)

    {

        p=L->next;

        L->data=p->data;

        L->next=p->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)//打印

{

   linklist p;

   p=L;

   do

   {

       printf("%d\n", p->data);

       p = p->next;

   }while(p!=NULL);

   

}

 

为什么我这个代码打印出来是倒序的

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-02 19:54
    关注

    因为你在createfromhead()函数中,有一句s->next =L;也就是后插入的节点放在了前边,所以遍历的时候就是后插入的先打印出来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探