问题遇到的现象和发生背景
创建一个链表,实现输入,输出。
但是最后只能输入一个len;程序就结束了。
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
/*
2022年3月22日
功能:创建一个链表,实现输入,输出
目的:学习链表的制作
*/
typedef struct node//如果数据类型增加一个新的名字,请使用typedef
{
int data;//数据域
struct node * pNext;//指针域
} *PNode, Node;
PNode creat_list (void);
void traverse_list(PNode Ppointer);
int main (void)
{
PNode Ppointer = NULL;
Ppointer = creat_list ();
traverse_list( Ppointer);//传递参数式不需要再次定义数据类型,传递参数时,形参需要定义数据类型
return 0;
}
PNode creat_list(void)
{
int len;
int i;
int val;
PNode pNew;
PNode Ppointer = (PNode)malloc(sizeof(Node));//创建头指针 和头节点
pNew = Ppointer->pNext ;
//判断头指针和头节点是否创建成功。健壮性!
if(Ppointer != NULL)
printf("创建成功!\n");
else
{
printf("创建失败,程序终止!\n");
exit(-1);
}
//输入链表的长度!
printf("请输入你需要的链表的长度:len=");
scanf("%d",len);
//依次输入你存放在链表中的数据
/*
这里的for循环应该怎么写?
1.把Ppointer->pNext存储在pNew中
2把pNew->pNext在存储在pNew中。
*/
for(i = 0; i < len; i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",val);
pNew->data = val;
pNew = pNew->pNext ;
pNew = NULL;
return Ppointer;
}
}
void traverse_list(PNode PP)
{
PNode pNew;
pNew = PP->pNext;
while(pNew != NULL)
{
printf("%d ",pNew->data);
pNew = pNew->pNext ;
}
}
运行结果及报错内容
创建成功!
请输入你需要的链表的长度:len=3(3是输入值)
我的解答思路和尝试过的方法
我想要达到的结果
实现输入和输出