双向循环链表java,java单向链表和双向链表区别

  双向循环链表java,java单向链表和双向链表区别

  本文分享双链表的java实现代码,供大家参考。具体如下。

  

一、双向链表简介

1、单链表的缺陷

 

  单链表只能从起始节点开始访问链表中的数据元素,逆序访问单链表中的数据元素会极其低效。

  2、双向链表的结构

  双向链表是链表的一种,由节点组成。每个数据节点有两个指针,分别指向直接后继和直接前任。

  3、双向链表类的基本结构

  class heronode 2 {//no . public int no;//name公共字符串名称;//昵称公共字符串昵称;//下一个节点代码是public HeroNode2 next//上一个节点,public HeroNode2 prepublic HeroNode2(int no,String name,String nickName){ this . no=no;this.name=namethis.nickName=昵称;} public HeroNode2(int no,String name){ this . no=no;this.name=name} @ Override public String to String(){ return HeroNode { no= no ,name= name ,nickName= nickName }} }

二、双向链表的操作

1、双向链表的插入操作

 

  //向单向链表添加一个节点。//1.查找当前链表的最后一个节点。//2.将最后一个节点的下一个指定为新节点public void add(hero node 2 hero node){//因为头节点不能移动,所以需要一个辅助变量temp HeroNode2 temp=headWhile (true) {//根据是否有下一个节点判断是否在链表if (temp.next==null)的末尾{ break}//如果没有找到最后一个temp,则向后移动temp=temp.next}//退出循环时,temp指向链表的最后一个位置。//当最后一个节点的下一个指向新节点时。//新节点的上一个节点指向temp temp.next=heroNodeheroNode.pre=temp}2、双向链表的删除操作

  /* * *删除节点根据编号*双链表查找对应节点直接删除* @param no节点编号*/public void Delete byno(int no){//判断链表是否为空if(head . next==null){ system . out . println(链表为空);返回;} HeroNode2 temp=head//设置标识布尔标志=falseWhile (true) {//已经遍历到链表的末尾if(temp==null){ break;}//查找已修改节点的前一个节点if(temp . no==no){ flag=true;打破;} temp=temp.next}//找到对应的节点if (flag) {//找到要删除的节点的上一个节点并将被删除节点的下一个节点绑定为中间变量temp.pre.next=temp.next的下一个节点;if (temp.next!=null){ temp . next . pre=temp . pre;}} else {System.out.println(没有对应节点无法删除);}}}以上是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: