C语言实现链表之单向链表(二)结点内存申请及数据初始化
来源:互联网 发布:外文电子图书数据库有 编辑:程序博客网 时间:2024/04/20 17:27
C语言实现链表之单向链表(二)结点内存申请及数据初始化
在上一篇文章中已经给出了整体的设计框架,现在讲逐一给出每一个函数的实现,为了一一讲解,清晰一点,将分开介绍。
本篇文章将给出MyList_Single.c---实现文件的第一个函数,即对链表中的一个结点申请内存并对其内部的数据进行初始化的函数。程序如下,由于是第一个函数,所以会给出整个文件的前面部分。
/******************************************************************************************* UART Block** (c) Copyright* All Rights Reserved** Filename : MyList_Single.c** Function : 单向非循环链表的操作函数定义** History : 1. wangyi 2015-4-15 23:00 Version 1.0 creat*******************************************************************************************/#include <stdlib.h>#include <stdio.h>#include <string.h>#include "MyList_Single.h"/*============================================================================== * 操作 :为链表的结点分配内存,并初始化数据元素* 操作前:pListNode为链表的结点* 操作后:返回分配内存并初始化后的结点,操作失败返回NULL==============================================================================*/MyListNode* MallocMemInitNode(MyListNode* pListNode){ // 为结点分配存储空间 pListNode = (MyListNode*)malloc(sizeof(MyListNode)); if(pListNode == NULL) { // 内存分配失败 fprintf(stderr, "The allocating memory defeat.\n"); return NULL; } else { // 结点数据初始化 strcpy(pListNode->sNodeData.cName, ""); pListNode->sNodeData.iAge = 0; pListNode->pNextNodeAddr = NULL; } return pListNode; }
该程序给出了实现文件的所有头信息,大家可以清晰可见,此处不再赘述。下面只对该函数进行简单解释。
该函数为传入的结点申请内存,在内存申请成功以后对其内部的数据进行初始化,然后返回申请内存后的结点。这里一定要注意,传入的一级指针虽然分配了内存,但是不能直接传出函数,因为其是值传递,所以必须采用return的方法将申请内存后的指针返回,外部才能使用,至于具体的原因,在我的博客文章《C语言中“指针”作为“函数参数”时的注意事项》中有十分详细的解释,大家可以看一下那篇文章,链接是:
http://blog.csdn.net/dan15188387481/article/details/49363605
点击此处可以直接打开该链接的文章
这个函数对于一些库并不是很推荐使用,因为考虑到哪里分配哪里释放的缘故,在此函数内部申请的内存没有在内部释放,所以在顶层一定要对其内存进行释放,否则会带来内存泄露的恶果,在后面的测试用例中会有介绍。总之,这个函数大家可以考虑不使用,直接在顶层分配内存、初始化、释放内存即可。
1 0
- C语言实现链表之单向链表(二)结点内存申请及数据初始化
- C语言实现链表之双向链表(二)结点内存申请及数据初始化
- C语言实现链表之单向链表(十一)设置结点数据与获取结点数据
- C语言实现链表之单向链表(十三)获取数据对应的结点
- C语言实现链表之单向链表(五)头结点前插入结点
- C语言实现链表之单向链表(七)尾结点后插入结点
- C语言实现链表之单向链表(六)删除头结点
- C语言实现链表之单向链表(八)删除尾结点
- C语言实现链表之单向链表(九)在任意位置插入结点
- C语言实现链表之单向链表(十)删除任意结点
- C语言实现链表之双向链表(十一)设置结点数据与获取结点数据
- C语言实现链表之双向链表(十三)获取数据对应的结点
- C语言实现,无头结点不带环的单向链表的基本操作
- C语言实现链表之双向链表(五)头结点前插入结点
- C语言实现链表之双向链表(七)尾结点后插入结点
- 不带头结点的单向链表排序——插入排序(C语言)
- C语言单向链表的实现
- C语言实现的单向链表
- 开源项目DataBaseManager(二):“需求分析”
- 把session存到memecahe中
- mahout好文章
- Java web 中实现简单的文件上传与下载——学习笔记
- 9.3 保护视图级别的元素
- C语言实现链表之单向链表(二)结点内存申请及数据初始化
- C++类内存分布
- VHDL学习记录
- Linux内核原理-进程入门
- 孩子身高居然长这么快?
- HDU 1176 免费馅饼(DP)
- JavaScript命名空间
- Mybatis-解决字段名与实体类属性名不相同的冲突
- android 在eclipse中把局部变量变成成员变量前自动加m