(三)单链接表算法从头部插入节点及遍历节点

(三)单链接表算法从头部插入节点及遍历节点

链表头部插入思路解析遍历节点

链表头部插入思路解析

  头插入节点的两个重要步骤如下:

  • 新节点的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}
posted @ 2019-01-09 16:32  天星小苑  阅读(298)  评论(0编辑  收藏  举报