#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