链表的创建
来源:互联网 发布:Linux 线程 sched_fifo 编辑:程序博客网 时间:2024/05/17 04:59
链表的创建
先定义一个结构struct code
struct code{ int value; struct code * next;};
里面包含了一个变量value和一个struct code类型的指针,这个指针用来指向下一个节点,如图:
要创建链表,就要先定义一个struct code类型的指针指向第一个节点
struct code * first;
需要注意的是,此时first还没有初始化,为了安全,我们在定义时同时对first初始化
//需要包含头文件<stdlib.h>struct code * first = NULL;
这样first就算定义好了,但这个时候first的值为空,也就是说first还没有指向任何对象,现在我们让first指向第一个节点
//创建一个内存块,大小与一个struct code类型变量的大小相同,并让first指向该内存块first = (struct code *)malloc(sizeof(struct code));
因为malloc函数返回值类型为 void* 而first是 struct code * 类型,但两者本质上都是指针类型(都只表示地址),所以进行强制转换
此时first已经指向了一个节点,按照上面的方法我们再定义一个新节点 new_code ,如图:
接下来我们让 *first.next 指向 new_code
first->next = new_code;
如图:
然后再让 new_code 指向一个新的节点
new_code = (struct code *)malloc(sizeof(struct code));
这时我们要把第三个节点的地址给第二个节点中的 next
first->next->next = new_code;
显然这样的方法很麻烦,所以我们定义一个指针指向 new_code 前一个节点
struct code * prenew_code = NULL;
在创建新节点的时候,把旧节点的地址给 prenew_code
prenew_code = new_code;new_code = (struct code *)malloc(sizeof(struct code));
然后再让第二个节点的 next 指向第三个节点
prenew_code->next = new_code;
然后再让 prenew_code 指向 new_code,new_code 指向新节点
prenew_code = new_code;new_code = (struct code *)malloc(sizeof(struct code));prenew_code->next = new_code;
这样一直执行下去就可以得到一个链表了,完整代码如下:
//n为要创建的链表的长度struct code * createList(int n){ //创建第一个节点 struct code * new_code = (struct code *)malloc(sizeof(struct code)); struct code * prenew_code = new_code; struct code * first = new_code; for(int i = 1;i < n;i++){ //创建新节点 new_code = (struct code *)malloc(sizeof(struct code)); //让上一个节点指向新节点 prenew_code->next = new_code; prenew_code = new_code; } //返回链表第一个节点的地址 return first;}
阅读全文
0 0
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 链表的创建
- 创建链表的源码
- 循环链表的创建
- 环形链表的创建
- 循环链表的创建
- 链表的简单创建
- 二叉链表的创建
- 顺序链表的创建
- 线性链表的创建
- 单向链表的创建
- springMVC
- CodeForces 890B Vald and Cafes
- 易错1(字符)
- ffmpeg系列:使用ffmpeg转换为RGB数据并缩放视频
- 笔记(四)
- 链表的创建
- D.Game with Pearls
- 试验性的Numpy教程
- Android数据库
- (二)——添加网络权限和WebView访问网页
- python的元类
- 大数据学习之——Zookeeper安装
- NXP第十三届智能车竞赛就此拉开帷幕(更新中)
- Android面试题整理(1)