数据结构之单链表(头插法,尾插法)

单链表的头插法,得到的结果与输入顺序相反。

及每次在头结点之前插入新的结点。

 
/**
 * 在头结点前插入一个结点
 */
public void insert(int value){
    Node aNode = new Node(value);
    if(head == null){
        head = aNode;
    }else{
        aNode.next = head;
        head = aNode;
    }
}



尾插法得到的结果与输入顺序相同。实现时的不同之处则是需要增加一个“尾指针”来表示单链表的插入位置。代码如下:

/**
 * 在头结点后插入结点
 * 当单链表为空进行插入时,头尾指针均指向插入的结点
 * 当单链表不为空插入时,头指针不变,先定位尾指针,再在尾指针后插入
 */
public void insertBack(int value){
    Node aNode = new Node(value);
    Node tail = head;
    if(head == null){
        aNode.next = head;
        head = aNode;
    }
    else{
        //寻找尾结点
        while(tail.next != null)
            tail = tail.next;
        //在尾结点插入新结点
        tail.next = aNode;
    }

}

可以看出,尾插法比头插法的显著的 特点就是在没次进行插入时,需要先遍历单链表以找到链表的尾部。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
头插法尾插法是在链表数据结构中常见的两种插入元素的方法。 头插法的核心思想是将节点插入到链表的头部。在带头结点方式实现头插法时,首先创建一个节点,并将节点的next指针指向当前链表的头节点,再将头节点指向节点。而在不带头结点方式实现头插法时,直接将节点的next指针指向当前链表的头节点,再将头节点指向节点。 尾插法的核心思想是将节点插入到链表的尾部。在带头结点方式实现尾插法时,首先创建一个节点,并将节点的next指针置为NULL,然后找到链表的尾节点,将尾节点的next指针指向节点。而在不带头结点方式实现尾插法时,先判断链表是否为空,若为空则将节点作为链表的头节点,否则找到链表的尾节点,将尾节点的next指针指向节点。 关于代码实现,可以利用结构体和指针来定义链表节点的数据结构,如引用所示。然后根据需要选择头插法尾插法,使用相关的代码段来实现插入操作,如引用所示。具体的插入过程中,可以根据具体需求在节点中设置相关的数据信息。最后,通过运行程序可以得到链表插入操作的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【数据结构】:单链表头插法尾插法(动图+图解)](https://blog.csdn.net/weixin_46629453/article/details/125643226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [链表的三种插入方法(头插法尾插法,任意位置插入)](https://blog.csdn.net/weixin_63032791/article/details/122089859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值