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

本文详细解析了单链表头部插入节点的算法实现,包括新节点与原链表连接的具体步骤,以及链表节点遍历的完整过程。通过示例代码展示了如何在链表头部插入新节点,并提供了两种遍历链表节点的方法。

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

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

链表头部插入思路解析

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

  • 新节点的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}

转载于:https://www.cnblogs.com/ywx123/p/10222873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值