Java数据结构与算法3 链表
链表思想 链表是以节点的方式进行存储 每个节点包含两个域:data+next:指向下一个节点 链表的各个节点并不一定是连续存储的 链表分为带头节点的链表和不带头节点的链表,根据实际需求来选择 我们以水浒英雄好汉的排名来解释链表结构在Java中的实现 class HeroNode { int id ; String name ; Hero next ; } 每个英雄节点包含一个id,一个姓名(data域) 和指向下一个节点的引用next. 单链表-英雄好汉 现在我们有一个需求,就是向单链表中添加多个英雄好汉的节点。 添加节点思想:先创建一个head头节点,表示单链表的头 (case 1)每添加一个节点,添加到单链表的最后 找到最后一个节点,将最后节点的next指向 新的节点 (case 2)按排名添加到链表对应位置,如果该位置已经被占用,则返回错误信息 通过辅助节点找到新添加的节点的位置(遍历) 新的节点.next = temp.next temp.next = 新的节点 遍历链表思想:通过一个辅助变量来遍历整个单链表 删除节点思想:先找到要删除节点的前一个节点temp,temp.next = temp.next.next; 被删除的节点将不会有其他引用指向,会被垃圾回收。 查找单链表中倒数第K个节点(新浪) 1)编写一个方法,接受head参数+k参数 2)先遍历整个列表