自己做的第一个代码,感觉有问题。但是说不出来 (哈哈哈哈,水平差)希望大佬们改正改正。

#include<stdio.h>
#include<stdlib.h>
#define null 0;
typedef struct Lnode
{
    int data;
    struct Lnode *next;
}Lnode,*Linklist;

void main()//创建一个链表
{
    Lnode *l;
    l=(Lnode*)malloc(sizeof(Lnode));
    Lnode *s,*r=l;
    int x;
    scanf("%d",&x);
    while(x!=9999)
    {
        s=(Lnode*)malloc(sizeof(Lnode));
        s->data=x;
        r->next=s;
        scanf("%d",&x);
    }

r->next=null;    
}
 

美好的第一步。不过你这代码有啥问题要问啊?

 r->next=s; 后面要加一句r=s;这样链表才能链接起来

循环语句要里面要加一条语句:s->next = r->next

  while(x!=9999)
    {
        s=(Lnode*)malloc(sizeof(Lnode));
        s->data=x;
        r->next=s;
        scanf("%d",&x);
    }
    //改为
  while(x!=9999)
    {
        s=(Lnode*)malloc(sizeof(Lnode));
        s->data=x;
        //添加代码,要把s的下一个节点设置为r的下一个节点,这样链表就正常了,最后添加的节点是第一个节点。
        s->next = r->next
        r->next=s;
        scanf("%d",&x);
    }

 

你这个r->next  = s  你循环那么多次。没发现最终结果是 r->next = null 嘛。 

应该定义一个 p = r;

p -> = s;

p = p->next;

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

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

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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632