c - 使用结构变量时链表中的问题
问题描述
使用内存分配的链表代码:
#include<stdio.h>
struct node
{
int val;
struct node *point;
};
int main()
{
struct node *head;
head=(struct node* ) malloc(sizeof(struct node ));
void create(struct node* start);
void print(struct node* start);
create(head);
print(head);
return 0;
}
void create(struct node* start)
{
int test,a=1;
struct node* cur;
cur=start;
while(scanf("%d",&test)!=EOF)
{ if(a!=1)
{
cur=cur->point;
}
cur->point=(struct node* ) malloc(sizeof(struct node ));
cur->val=test;
a++;
printf("---------------");
printf("%d\n",cur);
printf("%d\n",cur->val);
printf("%d\n",cur->point);
printf("%d\n",a);
printf("---------------");
}
cur->point=NULL;
return;
}
void print(struct node* start)
{
struct node* cur;
cur=start;
while(cur!=NULL)
{
printf("%d ",cur->val);
cur=cur->point;
}
return;
}
使用结构变量的链表代码:
#include<stdio.h>
struct node
{
int val;
struct node *point;
};
int main()
{
struct node *head,link;
head=&link;
void create(struct node* start);
void print(struct node* start);
create(head);
print(head);
return 0;
}
void create(struct node* start)
{
int test,a=1;
struct node* cur;
cur=start;
while(scanf("%d",&test)!=EOF)
{ if(a!=1)
{
cur=cur->point;
}
struct node link;
cur->point=&link;
cur->val=test;
a++;
printf("---------------");
printf("%d\n",cur);
printf("%d\n",cur->val);
printf("%d\n",cur->point);
printf("%d\n",&link);
printf("%d\n",a);
printf("---------------");
}
cur->point=NULL;
return;
}
void print(struct node* start)
{
struct node* cur;
cur=start;
while(cur!=NULL)
{
printf("%d ",cur->val);
cur=cur->point;
}
return;
}
当我使用第二个代码时,它不能正常工作。它只打印两个值。
在 create() 的 while 循环中,我使用 struct 节点类型变量声明。
这就是为什么它应该声明一个新的结构节点类型链接变量,并且在每次执行中都应该看到一个新的内存(结构节点链接)地址。
所以有什么问题?
我是一个使用C学习数据结构的新手。请用简单的语言解释一下。
解决方案
推荐阅读
- c# - 如何使用使用哈希加密、C#、ASP.NET MVC、实体框架的存储过程验证帐户
- rsa - 如何使用我在 PuTTY 中生成的 SSH-1 RSA 公钥/私钥对
- android - 如何在 android webview 中添加打印支持
- javascript - 如何使用 javascript 循环和数组显示图像幻灯片?
- go - 将 libstdc++-6.dll 解码为 libstdc++-6.dll 的最快方法
- r - 你如何在 R 中创建一个新的字符变量?
- typescript - 使用 _.flatten 和不同类型的项目输入错误
- python - 如何从python中的html获取下拉输入的值?
- c++ - 计算小于或等于 N 的最大和的算法,只使用 M 个数组的一个数组元素?
- c# - 如何检查歌曲是否尚未添加到播放列表?(“.Contains”不起作用)