(一)单链接表实现及构建第一个节点
单链表结构单链表的节点构成使用堆内存创建一个节点链表的头指针构建第一个简单的链表
单链表结构
单链表的形象理解如下所示:
单链表结构单链表的创建步骤:
- 创建空的单链表,比如可以定义一个create_node()函数来创建第一个节点。
- 操作单链表(增添、删除、查找、更改、排序)。
- 销毁单链表,比如定义一个destroy_list()函数用于销毁链表。
单链表的节点构成
链表是由节点构成的,节点包括有效数据和指针两部分。在C语言中节点的构建方法就是定义一个结构体。需要注意的是这里定义了一个结构体类型,本身没有变量生成,不占用内存。
1struct node
2{
3 int data; //有效数据
4 struct node *pNext; //指向下一节点
5};
使用堆内存创建一个节点
使用堆内存创建链表的一般步骤:
- 申请一个节点大小的堆内存;
- 检查堆内存是否申请成功;
- 清理申请的堆内存;
- 填充节点中的数据;
- 节点中的指针初始化为NULL;
1struct node * create_node(int data)
2{
3 struct node *p = (struct node*)malloc(sizeof(struct node));//申请一个节点大小的堆内存
4 if(NULL == p)
5 {
6 printf("malloc error.\n"); //检查堆内存是否申请成功
7 return NULL;
8 }
9 bzero(p,sizeof(struct node)); //清理申请的堆内存
10 p -> data = data; //填充节点中的数据
11 p -> pNext = NULL; //节点中的指针初始化为NULL
12}
链表的头指针
头指针并不是节点,而是一个普通的指针变量(有的链表没有头指针),占4字节。
构建第一个简单的链表
- 定义头指针;
- 创建第一个节点,并将头指针指向第一个节点;
- 接着创建节点,并将新创建的节点从前一个节点的尾部插入;
- 依次类推,最终形成链表。
1//创建只有一个节点的链表
2int main()
3{
4 struct node *pHeader = NULL;
5 struct node *pHeader = create_node(0);
6 return 0;
7}