C语言实现链表之单向链表(一)头文件
链表作为一种十分常见的数据结构,其应用范围也是极广的。书本上以及网络上有很多链表的程序,但是自己用着不习惯,并且有些地方可能考虑的不是很完善,所以我自己写了一些常用数据结构的操作库,在这里分享给大家,希望可以帮助大家理解链表。
这里不对链表的理论再进行过多分析,主要是程序实现,所以大家可以在有一定的链表理论基础的时候再来看一下这些程序,也许会有很多收获,不止是程序本身的逻辑,还有一些风格和代码形式都可以参考一下。注意,本系列是单向链表!即指针域只有一个后向指针,并且头指针和尾指针并不相连。
本次设计的链表操作库主要包含三个文件,分别是:MyList_Single.h---头文件、MyList_Single.c---实现文件以及ListTestTop.c---测试文件。本篇文章先给出本次单向链表库的头文件,概览一下基本的结构形式和实现的功能。
/*
*****************************************************************************************
* UART Block
*
* (c) Copyright
* All Rights Reserved
*
* Filename : MyList_Single.h
*
* Function : 单向非循环链表结构定义及操作函数集声明
*
* History : 1. wangyi 2015-4-15 23:00 Version 1.0 creat
*
*****************************************************************************************
*/
#ifndef _MYLIST_
#define _MYLIST_
// C中的布尔变量定义
typedef enum{FALSE, TRUE}C_Bool;
// 链表数据定义
typedef struct MyListData
{
char cName[20];
int iAge;
}MyListData;
// 链表结点定义
typedef struct MyListNode
{
MyListData sNodeData;
struct MyListNode* pNextNodeAddr;
}MyListNode;
// 链表操作函数声明
/*==============================================================================
* 操作 :为链表的结点分配内存,并初始化数据元素
* 操作前:pListNode为链表的结点
* 操作后:返回分配内存并初始化后的结点,操作失败返回NULL
==============================================================================*/
MyListNode* MallocMemInitNode(MyListNode* pListNode);
/*==============================================================================
* 操作 :创建链表
* 操作前:pListNode为链表的头结点
* 操作后:读取数据,直到遇到年龄为负数为止,成功返回头结点,失败返回NULL
==============================================================================*/
MyListNode* CreatMyList(MyListNode* pListNode);
/*================&