(三)单链接表算法从头部插入节点及遍历节点
(三)单链接表算法从头部插入节点及遍历节点
链表头部插入思路解析
头插入节点的两个重要步骤如下:
- 新节点的pNext指向第一个节点的首地址,即新节点和原来的第一个节点相连。
- 头节点的pNext指向新节点的首地址,即头节点和新节点相连。
在这里插入图片描述
1/*
2 * pH : 头节点
3 * new: 新节点
4 */
5void insert_head(struct node *pH, struct node *new)
6{
7 new->pNext = pH->pNext; //新节点与原来第一个节点相连
8 pH -> pNext = new; //头节点和新节点相连
9}
遍历节点
遍历过程分析
- 指针p访问第一个有效节点,并判断是否为尾节点、取出数据,指针p移动到下一节点。
- 判断当前节点是否为尾节点,取出数据,移动到下一节点。
- 判断当前节点是否为尾节点,发现它就是尾节点,取出数据,停止遍历。
1void list_for_each1(struct node* pH)
2{
3 struct node *p = pH ->pNext; //跳过头节点
4 while(NULL != p -> next)
5 {
6 printf("node data : %d.\n",p->data);
7 p = p -> pNext;
8 }
9 printf("node data : %d.\n",p->data);//打印尾节点
10}
1void list_for_each2(struct node* pH)
2{
3 struct node *p = pH; //头节点
4 while(NULL != p -> next)
5 {
6 p = p -> pNext;
7 printf("node data : %d.\n",p->data);
8 }
9}