Java数据构造之链表(Linked List)

2019-11-12 01:25 来源:原创 网络编辑:admin 阅读 报错

  //定义SingleLinkedList 办我们的英公

  class SingleLinkedList {

  //先初始募化壹个头节点, 头节点不要触动, 不寄存放详细的数据

  private HeroNode head=new HeroNode(0, "", "");

  //前往头节点

  public HeroNode getHead() {

  return head;

  }

  //添加以节点到单向链表

  //文思,当不考虑编号以次时

  //1. 找到以后链表的最末节点

  //2. 将最末此雕刻个节点的next 指向 新的节点

  public void add(HeroNode heroNode) {

  //鉴于head节点不能触动,故此我们需寻求壹个辅弼遍历 temp

  HeroNode temp= head;

  //遍历链表,找到最末

  while(true) {

  //找到链表的最末

  if(temp.next==null) {//

  break;

  }

  //假设没拥有拥有找到最末, 将将temp后移

  temp= temp.next;

  }

  //当参加以while循环时,temp就指向了链表的最末

  //将最末此雕刻个节点的next 指向 新的节点

  temp.next= heroNode;

  }

  //第二种方法在添加以英公时,根据排名将英公拔出产到指定位置

  //(假设拥有此雕刻个排名,则添加以违反败,并给出产提示)

  public void addByOrder(HeroNode heroNode) {

  //鉴于头节点不能触动,故此我们依然经度过壹个辅弼指针(变量)到来僚佐找到添加以的位置

  //鉴于单链表,鉴于我们找的temp 是位于 添加以位置的前壹个节点,不然拔出产不了

  HeroNode temp= head;

  boolean flag=false; // flag标注识表记标注帜添加以的编号能否存放在,默认为false

  while(true) {

  if(temp.next==null) {//说皓temp曾经在链表的最末

  break; //

  }

  if(temp.next.no > heroNode.no) { //位置找到,就在temp的前面拔出产

  break;

  } else if (temp.next.no==heroNode.no) {//说皓期望添加以的heroNode的编号已然存放在

  flag =true; //说皓编号存放在

  break;

  }

  temp =temp.next; //后移,遍历以后链表

  }

  //判佩flag 的值

  if(flag) { //不能添加以,说皓编号存放在

  System.out.printf("预备拔出产的英公的编号 %d 曾经存放在了, 不能参加以\n", heroNode.no);

  } else {

  //拔出产到链表中, temp的前面

  heroNode.next= temp.next;

  temp.next = heroNode;

  }

  }

  //修变节点的信息, 根据no编号到来修改,即no编号不能改.

关键词:

分享到:
至顶 反馈 至底