单链表操作

简单的单链表操作


public class ListNote {

T data;

  ListNotenext;

  public ListNote(T value) {

this.data = value;

  }

}

下面是操作类

public class ListNoteAction {

/**

  * 添加一个新的节点

  * @param head 当前头结点

  * @param newHead

  */

  public static void addHead(ListNote head, ListNote newHead) {

ListNote oldHead = head;

    head = newHead;

    head.next = oldHead;

  }

/**

  * 在当前尾节点添加一个新的尾节点

  * @param tail 当前尾节点

  * @param newTail

  */

  public static void tailAdd(ListNote tail, ListNote newTail) {

ListNote oldTail = tail;

    tail = newTail;

    oldTail.next = tail;

    tail.next =null;

  }

/**

  *  在 midNote 后面插入一个新的节点

  * @param midNote

  * @param newNote

  */

  public static void insert(ListNote midNote, ListNote newNote) {

ListNote odlNext = midNote.next;

    midNote.next = newNote;

    newNote.next = odlNext;

  }

/**

  * 遍历当前链表

  * @param head

  */

  public static void listAll(ListNote head) {

if (Objects.isNull(head)) {

return;

    }

ListNote tempHead = head;

    while (tempHead !=null) {

System.out.print(tempHead.data +" ");

      tempHead = tempHead.next;

    }

}

/**

  * 根据index 查询节点

  * @param head

  * @param index

  * @return

  */

  public static ListNoteindex(ListNote head, int index) {

if (Objects.isNull(head)) {

return null;

    }

int j =0;

    while (Objects.nonNull(head) && j < index) {

head = head.next;

      j++;

    }

System.out.println();

    System.out.println(head.data);

    return head;

  }

/**

  * 删除当前这个节点的后续节点

  * @param delAfterThisNode

  */

  public static void del(ListNote delAfterThisNode){

ListNote currentNext = delAfterThisNode.next;

    ListNote currentNextNext = currentNext.next;

    delAfterThisNode.next = currentNextNext;

    currentNext.next =null;

  }

public static void main(String[] args) {

ListNote node1 =new ListNote<>(1);

    ListNote node2 =new ListNote<>(2);

    ListNote node3 =new ListNote<>(3);

    ListNote node4 =new ListNote<>(4);

    node1.next = node2;

    node2.next = node3;

    node3.next = node4;

    node4.next =null;

    System.out.println(node1);

    ListNote node0 =new ListNote<>(0);

    addHead(node1, node0);

    ListNote node5 =new ListNote<>(5);

    tailAdd(node4, node5);

    ListNotenode2_2=new ListNote<>(22);

    insert(node2, node2_2);

    listAll(node0);

    index(node0, 3);

    del(node2);

    listAll(node0);

  }

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 4,781评论 1 45
  • 致小丑 半米矮墙的铁栅栏上 有一只小丑在放飞手中的旧气球 红的蓝的都已经褪色 他抬头 看他们飞向天空 没有人要它们...
    子曰无衣阅读 222评论 0 0
  • 朱棣生前比较喜欢二儿子朱高煦,因为朱高煦像他,会打仗,长得也精神,靖难之役的时候,立了不少战功。可对长子朱高炽,朱...
    梅香书宛阅读 504评论 0 0
  • 1 改变林陌一生轨迹的那个人叫张凌锋,很罡气十足的名字。相识于网络世界,相聚现实,以后的几年里很多人都认为他们二人...
    墨染微雨阅读 386评论 0 0

友情链接更多精彩内容