#include main() { struct node{int n;struct node *nest;} *p;
#include main() { struct node{int n;struct node *nest;} *p;#includemain(){struct node{int n;struct node *nest;} *p;struct node x[3]={{2,x+1},{4,x+2},{6,NULL}};p=x;printf("%d\n",p->n);printf("%d\n",p->next->n);}
最佳回答
这里是用初始化的方式定义了一个结构体链表,先说我们正常的定义链表的方式:struct node x,*new;x。n = 2;new = (struct node *)malloc(sizeof(struct node));x->next = new;new。n = 4; 最后一个节点就不写了,做法就是申请一个节点空间,链接到第一个节点上,再进行赋值。 这里的做法也很简单,但是节点很多的情况就不适合了,对结构体元素n的赋值想必你能理解,就是赋值为2、4、6,对struct node *next赋值时用的x的地址进行偏移,它能这样做的基础就是这三个节点本身也是在同一个数组中的,所以地址可以通过x+1、x+2获取。结点1的地址:x,结点2的地址:x+1,结点3的地址:x+2,所以它要链起来直接给结点1的next赋值为x+1,给结点2的next赋值为x+2。最终就生成一个3结点链表。
最新回答共有2条回答
-
2026-04-03 11:15:43危机的期待
回复这里是用初始化的方式定义了一个结构体链表,先说我们正常的定义链表的方式:struct node x,*new;x。n = 2;new = (struct node *)malloc(sizeof(struct node));x->next = new;new。n = 4; 最后一个节点就不写了,做法就是申请一个节点空间,链接到第一个节点上,再进行赋值。 这里的做法也很简单,但是节点很多的情况就不适合了,对结构体元素n的赋值想必你能理解,就是赋值为2、4、6,对struct node *next赋值时用的x的地址进行偏移,它能这样做的基础就是这三个节点本身也是在同一个数组中的,所以地址可以通过x+1、x+2获取。结点1的地址:x,结点2的地址:x+1,结点3的地址:x+2,所以它要链起来直接给结点1的next赋值为x+1,给结点2的next赋值为x+2。最终就生成一个3结点链表。
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
