C语言链表输。数据输入完成了,输出的时候只能输出最后一个,求指导:)
3个回答
展开全部
能把完整代码,发出来,不要发图片的那种,我好调试
简单看了一下,你这个t1就是最后了,你应该定义一个中间变量,使得这个t1不要动才对
给你改了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Node
{
int data;
struct node *next;
}LNode,*LinkList;
void main()
{
LinkList t1;
LinkList t; //这里定义一个中间变量
LinkList s1,s;
int length_1,i;
int data;
printf("请输入单链表1的长度:\n");
scanf("%d", &length_1);
t1 = (LinkList)malloc(sizeof(LNode));
t = t1;
t1->next = NULL;
for (i = 0; i < length_1; i++)
{
printf("请输入第%d个数据:\n", i);
scanf("%d", &data);
s1 = (LinkList)malloc(sizeof(LNode));
s1->data = data;
s1->next = NULL;
t->next = s1;
t = s1;
}
printf("链表的1的内容为:\n");
s = t1->next;
while (s)
{
printf("%d ", s->data);
s = s->next;
}
printf("\n");
system("pause");
return 0;
}
展开全部
链表一般我是这样写的: 供参考
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main(int argc, char *argv[])
{
struct node *p=NULL; //当前链表位置
struct node *head=NULL; //链表头
struct node *body=NULL; //链表结点
while(1)
{
int n;
fflush(stdin); //清空键盘缓冲区
scanf("%d",&n); //接受数据
if(n==-1) //如果输入为-1则表示结束输入
{ //n也可以在while()中判断,不过我认为这样写逻辑更清楚
break; //退出循环
}
body=(struct node*)malloc(sizeof(struct node));
body->data=n;
body->next=NULL;
if(head==NULL) //如果头为空则赋给头结点
{
head=body;
p=body; //并把当前链表位置指向头结点
}
else //头不为空
{
p->next=body;
p=body; //移动链表当前位置
}
}
p=head; //位置指向头
int i=1;
while(p!=NULL)
{
printf("\n链表%d的内容为:%d",i++,p->data);
p=p->next;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你输出的是链表的最后一个数据。完整代码贴出来比较好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询