#include #include #include /* 数据结构C 语言版 线性表的单链表存储结构表示和实现 P28-31 编译环境:Dev-C++ 4
2 日期:2011 年2 月10 日 */ typedef int ElemType; // 线性表的单链表存储结构 typedef struct LNode { ElemType data; //数据域 struct LNode *next;//指针域 }LNode, *LinkList; // typedef struct LNode *LinkList; // 另一种定义LinkList 的方法 // 构造一个空的线性表L int InitList(LinkList *L) { /* 产生头结点L,并使L 指向此头结点,头节点的数据域为空,不放数据的
void * malloc(size_t) 这里对返回值进行强制类型转换了,返回值是指向空类型的指针类型
*/ (*L) = (LinkList)malloc( sizeof(struct LNode) ); if(
(*L) ) exit(0); // 存储分配失败 (*L)->next = NULL; // 指针域为空 return 1; } // 销毁线性表L,将包括头结点在内的所有元素释放其存储空间
int DestroyList(LinkList *L) { LinkList q; // 由于单链表的每一个元素是单独分配的,所以要一个一个的进行释放 while( *L ) { q = (*L)->next; free( *L ); //释放 *L = q; } return 1; } /* 将L 重置为空表,即将链表中除头结点外的所有元素释放其存 储空间,但是将头结点指针域置空,这和销毁有区别哦
不改变 L,所以 不需要用指针