介绍
单向链表是一个线性数据结构。它和数组不同之处就在于它是用指针把所有的结点连接起来,而不是一大块连续内存。
实现
单向链表的结构比较单一:
typedef struct _Node
{
int data;
struct _Node* next;
}Node;
typedef struct _List
{
Node* head;
Node* tail;
int length;
}List;
每个结点只有数据域和指针域,指针域指向下一个结点。而链表中有头结点、尾结点和链表长度。
void init()
{
g_list = new List;
g_list->head = nullptr;
g_list->tail = nullptr;
g_list->length = 0;
}
void finit()
{
Node* p = g_list->head;
while(nullptr != g_list->head)
{
p = p->next;
delete g_list->head;
g_list->head = p;
}
}
链表的初始负责创建一个链表,而结束而负责释放链表中存储的结点内存。
Node* search(int key)
{
Node* p = g_list->head;
while(nullptr != p && p->data != key)
{
p = p->next;
}
return p;
}