1. 存储方式
typedef struct LINKNODE
{
DataType data; //节点的值
struct LINKNODE* next; //指向下一个节点的指针
}LNode;
2. 基本操作
(1)链表的创建
在创建链表时,有两种实现方式:第一种,每创建一个新节点,作为新的头结点插入到链表的头部之前;第二种,每创建一个新节点,则插入到链表的尾部后。
a. 以下是头插法的实现方式:
void CreateList(LNode** head, DataType[] dataArr, unsigned int len)
{
//对函数的前置条件进行判断
if (!head || !(*head))
{
return;
}
unsigned int i;
for (i = 0; i < len; i++)
{
//申请新的节点
LNode* newNode = (LNode* )malloc(sizeof(LNode));
//申请失败,则退出
if (!newNode)
{
return;
}
newNode->data = dataArr[i];
newNode->next = *head;
*head = newNode;
}
}
b. 尾插法的实现与头插法是类似的,所以这里就不给出来了。
(2)链表的销毁
要销毁一个链表主要是将链表的所有节点都释放掉,以下是实现代码:
void FreeList(LNode** head)
{
while (*head)
{
LNode* nextNode = (*head)->next;
free(*head);
(*head) = nextNode;
}
(*head) = NULL;
}