c语言链表的输入求指导,纠结了好久
(。。最近学链表做了个程序,结果没有报错,但没法输入,程序一直输出的是我初始化的1234)#include<stdio.h>#include<stdlib.h>typed...
(。。最近学链表做了个程序,结果没有报错,但没法输入,程序一直输出的是我初始化的1 2 3 4)
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int score;
struct student *link;
}STU;
STU *Build(void)
{
STU *a,*temp ,*head;
a=(STU*)malloc(sizeof(STU));
head=a;
temp=head;
temp->score=1;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=2;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=3;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=4;
a->link=NULL;
return head;
}
int main()
{
STU *a;
a=Build();
do
{
scanf("%d",&a->score);
a=a->link;
}
while(a!=NULL);
a=Build();
do
{
printf("%d\n",a->score);
a=a->link;
}
while(a!=NULL);
} 展开
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int score;
struct student *link;
}STU;
STU *Build(void)
{
STU *a,*temp ,*head;
a=(STU*)malloc(sizeof(STU));
head=a;
temp=head;
temp->score=1;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=2;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=3;
a=(STU*)malloc(sizeof(STU));
temp->link=a;
temp=a;
temp->score=4;
a->link=NULL;
return head;
}
int main()
{
STU *a;
a=Build();
do
{
scanf("%d",&a->score);
a=a->link;
}
while(a!=NULL);
a=Build();
do
{
printf("%d\n",a->score);
a=a->link;
}
while(a!=NULL);
} 展开
展开全部
//说实话,感觉你对链表的整体流程不太熟悉.
//一个简单但完整的单向链表
#include <stdio.h>
#include <stdlib.h>
struct node //定义结构体
{
int data; //存放数据
struct node* next; //指向下一个结点
};
struct node* Create() //新建结点并初始化
{
struct node* n=(struct node*)malloc(sizeof(struct node)*1);
n->data=-1;
n->next=NULL;
return n;
}
int main()
{
struct node *head=NULL,*p=NULL;
int in;
while(1)
{
fflush(stdin); //清空输入缓冲区
scanf("%d",&in);
if(in==-1) break; //如果输入的是-1则表示用户结束输入
struct node *new_node;
new_node=Create(); //新建结点
new_node->data=in; //把用户输入的数据存储入新结点中
if(head==NULL) //如果头结点为空,则把当前新结点当成头结点
{
head=new_node;
p=head; //当前指向为头结点
}
else //如果头结点不为空
{
p->next=new_node; //把上一个结点的next指向新建结点
p=p->next; //当前指向为新结点
}
}
p=head; //重新指向头结点,以便输出
while(1)
{
printf("\n%d",p->data); //输出数据字符串
if(p->next==NULL) break; //如果当前结点没有指向下一个结点,则退出
p=p->next; //当前指向下一个结点
}
return 0;
}
追问
我刚刚学链表写了个练习程序。。。我想知道为什么我用scanf不能把int型数据输进链表去呢
追答
你写得全乱了, Build函数只是为了给输入的数据造一个空的房子, 结果你一下在build函数中把整个链表全写好了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询