c语言链表的输入求指导,纠结了好久
发布网友
发布时间:2022-04-26 07:15
我来回答
共2个回答
热心网友
时间:2023-10-08 21:21
//说实话,感觉你对链表的整体流程不太熟悉.
//一个简单但完整的单向链表
#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函数中把整个链表全写好了
热心网友
时间:2023-10-08 21:21
你把中间的main中间的build()去掉。