Im_Txxxxxx 2022-03-13 11:05 采纳率: 100%
浏览 50
已结题

带头单链表怎么逆序输出

img


程序运行到puts就停止了
问题遇到的现象和发生背景

问题相关代码,请勿粘贴截图

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

typedef struct Lnode{
int data;
struct Lnode *next;
}LinkList;

LinkList CreateList_L(LinkList *&L,int a[],int n)
{
int i;
LinkList *s,head;
head=(LinkList
)malloc(sizeof(LinkList));
head->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data =a[i];
s->next =head->next;
head->next=s;
}
return *head;
}

void replaceList_L(LinkList *&L)
{
LinkList *right=L;
LinkList *left=NULL;
LinkList *now;
while(right!=NULL)
{
now=right;
right=right->next ;
now->next =left;
left=now;
}
}

void print(LinkList *&L)
{

puts("print ");
while(L->next !=NULL)
{
    printf("%d ",L->data);
    L=L->next;
    puts("ok"); 
 }
 puts("no");

}

int main()
{
LinkList *list;
int num[5],i;
for(i=0;i<5;i++)
{
scanf("%d",&num[i]);
}
CreateList_L(list,num,5);
print(list);
replaceList_L(list);
print(list);
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-03-13 11:53
    关注

    修改处见注释,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct Lnode{
        int    data;
        struct Lnode *next;
    }LinkList;
    void  CreateList_L(LinkList *&L,int a[],int n)
    //LinkList* CreateList_L(LinkList *&L,int a[],int n)
    {
        int i;
        LinkList *s,*head;
        L=(LinkList*)malloc(sizeof(LinkList));
        L->next=NULL;
        head = L;
        for(i=0;i<n;i++)
        {
            s=(LinkList*)malloc(sizeof(LinkList));
            s->next =NULL;
            s->data =a[i];
            head->next = s; //s->next =head->next;
            head =s;        //head->next=s;
        }
                            //return head;
    }
    
    void replaceList_L(LinkList *&L)
    {
        LinkList *right=L->next;
        L->next = NULL; //LinkList *left=NULL;
        LinkList *now;
        while(right!=NULL)
        {
            now=right;
            right=right->next ;
            now->next =L->next;//now->next =left;
            L->next =now;      //left=now;
        }
    }
    void print(LinkList *L)
    //void print(LinkList *&L)
    {
        puts("print ");
        while(L->next !=NULL)
        {
            printf("%d ",L->next->data); //printf("%d ",L->data);
            L=L->next;
                   //puts("ok");
        }
        puts("\n");//puts("no");
    }
    
    int main()
    {
        LinkList *list;
        int num[5],i;
        for(i=0;i<5;i++)
        {
           scanf("%d",&num[i]);
        }
    
        CreateList_L(list,num,5);
        print(list);
    
        replaceList_L(list);
        print(list);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月13日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助