最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)單鏈表、雙向鏈表

 更新時(shí)間:2021年08月01日 11:01:54   作者:New_Null  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)單鏈表、雙向鏈表的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)單鏈表、雙向鏈表的相關(guān)代碼,供大家參考,具體內(nèi)容如下

java實(shí)現(xiàn)單鏈表:

package code;

class Node
{
 Node next;
 int data;
 public Node(int data)
 {
 this.data=data;
 }
 
}
class LinkList
{
 Node first;
 //頭部
 public LinkList()
 {
 this.first=null;
 }
 public void addNode(Node no)
 {
 no.next=first;
 first=no;//在頭部添加
 }
 public void delectNode()
 {
 Node n=first.next;
 first=null;
 first=n;//在頭部刪除
 }
 //刪除指定位置
 public int Number()
 {
 int count=1;
 //查看有多少元素
 Node nd=first;
 while(nd.next!=null)
 {
  nd=nd.next;
  count++;
 }
 return count;
 }
 public void delectExact(int n)
 {
 //刪除指定位置
 if(n>1)
 {
  int count=1;
  Node de=first;
  while(count<n-1)
  {
  de=de.next;
  count++;
  
  }
  de.next=de.next.next;
 }
 else
  first=first.next;
 
 }
 public void addExact(int n,Node nd)
 {
 if(n>1)//添加指定位置
 {
  int count=1;
  Node de=first;
  while(count<n-1)
  {
  de=de.next;
  count++;
  
  }
  nd.next=de.next;
  de.next=nd;

 }
 else
  first=first.next;
 }
 public int findNode(int n)
 {
 int count=1;//查找一個(gè)數(shù)對(duì)應(yīng)的位置
 Node de=first;
 while(de.data!=n)
 {
  de=de.next;
  count++;
  if(de==null)
  {
  return -1;
  }
 }
 return count;
 }
 public void print()
 {
 Node no=first;//打印所有
 while(no!=null)
 {
  System.out.println(no.data);
  no=no.next;
 }
 }
}
public class TextNode
{
 public static void main(String[] args)
 {
 LinkList ll=new LinkList();
 ll.addNode(new Node(12));
 ll.addNode(new Node(15));
 ll.addNode(new Node(18));
 ll.addNode(new Node(19));
 ll.addNode(new Node(20));
 /*System.out.println(ll.first.data);

 ll.delectNode();
 System.out.println(ll.first.data);*/
 System.out.println(ll.Number());
 ll.delectExact(3);
 ll.addExact(3, new Node(100));
 System.out.println(ll.Number());
// ll.print();
 System.out.println(ll.findNode(112));
 
 }
}

java實(shí)現(xiàn)雙向鏈表:

public class DoubleLink
{
 public static void main(String[]args)
 {
 Node2 no=new Node2(5);
 no.addLeft(new Node2(6));
 no.addRight(new Node2(7));
 /*no.print();
 no.print2();*/
 no.addExact2(1, new Node2(8));
 no.print();
 System.out.println("--------------");
 no.print2();
 }
}
class Node2
{
 public Node2 first;
 public Node2 end;
 public Node2 left;
 public Node2 right;
 int data=0;
 public Node2(int n)
 {
 
 first=this;
 end=this;
 
 first.data=n;
 }
 //從頭部添加
 public void addLeft(Node2 before)
 {
 first.left=before;
 before.right=first;
 first=before;
 }
 //從尾部添加
 public void addRight(Node2 after)
 {
 end.right=after;
 after.left=end;
 end=after;
 }
 //插入正數(shù)(第三聲)的第幾個(gè)
 public void addExact(int n,Node2 no)
 {
 int count=0;
 if(n==0)
 {
  addLeft(no);
 }
 else
 { 
  Node2 f=first;
  while(true)
  {
  f=f.right;
  count++;
  if(count==n)
  {
   //此處為四個(gè)指針的指向的變化
   no.left=f.left;
   f.left.right=no;
 //  first.left=no;
   no.right=f;
   f.left=no;
   break;
  }
 
  }
 }
 }
 //插入倒數(shù)的第幾個(gè)
 public void addExact2(int n,Node2 no)
 {
 int count=0;
 if(n==0)
 {
  addRight(no);
 }
 else
 {
  Node2 f=end;
  while(true)
  {
  f=f.left;
  count++;
  if(count==n)
  {
   
   no.left=f;
   no.right=f.right;
   f.right.left=no;
   f.right=no;
   break;
   
  }
  }
 }
 }
 //正序遍歷
 public void print()
 {
 System.out.println(first.data);
 while(first.right!=null)
 {
  System.out.println(first.right.data);
  first=first.right;
 }
// System.out.println(end.data);
 }
 //倒序遍歷
 public void print2()
 {
 System.out.println(end.data);
 while(end.left!=null)
 {
  System.out.println(end.left.data);
  end=end.left;
 }
 }
 

}
/*值得注意的是,每一次插入一個(gè)新的對(duì)象的時(shí)候,需要注意指針指向的改變。
首先是這個(gè)新的對(duì)象兩邊的指向(左和右),其次是時(shí)左邊的對(duì)象向右的指向
和右邊對(duì)象向左的指向。
這四個(gè)指針的指向必須正確,否則可能導(dǎo)致正序或者倒序遍歷無(wú)法實(shí)現(xiàn)。
*/
/*對(duì)比單鏈表,單鏈表只能從一個(gè)方向遍歷,因?yàn)橹挥幸粋€(gè)頭,而雙向鏈表,有頭和尾,可以從
 * 頭遍歷,也可以從尾遍歷,而且其中一個(gè)對(duì)象因?yàn)橛袃蓚€(gè)方向的指針,所以他可以獲得左邊的
 * 對(duì)象也可以獲得右邊的對(duì)象。
 * 但是單鏈表的話,因?yàn)橹挥幸粋€(gè)方向,所以只能向左或右。添加對(duì)象的時(shí)候,雙向也可以從頭添加,也可以從尾添加。
 * 如果單鏈表要實(shí)現(xiàn)兩個(gè)方向添加比較難得,或者說(shuō)不行,因?yàn)樗挥邢蜃蠡蛳蛴业囊粋€(gè)方向的指針
 * 而雙向鏈表每個(gè)對(duì)象都有兩個(gè)方向的指針沒(méi)這樣更靈活,但是這同樣有缺點(diǎn),因?yàn)檫@樣的話每個(gè)對(duì)象
 * 都會(huì)包含兩個(gè)指針,這同樣內(nèi)存會(huì)消耗更多。
 * 
 * */

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)緩存組件配置動(dòng)態(tài)切換的步驟詳解

    SpringBoot實(shí)現(xiàn)緩存組件配置動(dòng)態(tài)切換的步驟詳解

    現(xiàn)在有多個(gè)springboot項(xiàng)目,但是不同的項(xiàng)目中使用的緩存組件是不一樣的,有的項(xiàng)目使用redis,有的項(xiàng)目使用ctgcache,現(xiàn)在需要用同一套代碼通過(guò)配置開(kāi)關(guān),在不同的項(xiàng)目中切換這兩種緩存,本文介紹了SpringBoot實(shí)現(xiàn)緩存組件配置動(dòng)態(tài)切換的步驟,需要的朋友可以參考下
    2024-07-07
  • EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    EL全名為Expression Language,這篇文章主要給大家介紹EL表達(dá)式的主要作用及內(nèi)容簡(jiǎn)介,感興趣的朋友一起看看
    2017-07-07
  • idea2020最新版配置maven的方法

    idea2020最新版配置maven的方法

    這篇文章主要介紹了idea2020最新版配置maven的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Springmvc自定義參數(shù)轉(zhuǎn)換實(shí)現(xiàn)代碼解析

    Springmvc自定義參數(shù)轉(zhuǎn)換實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了Springmvc自定義參數(shù)轉(zhuǎn)換實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringMVC中的@RequestMapping注解解析

    SpringMVC中的@RequestMapping注解解析

    這篇文章主要介紹了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些?URL?請(qǐng)求,在控制器的類定義及方法定義處都可標(biāo)注@RequestMapping,需要的朋友可以參考下
    2023-12-12
  • Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC打印@RequestBody、@Response日志的方法

    這篇文章主要介紹了Spring MVC打印@RequestBody、@Response日志的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Sleuth(Micrometer)+ZipKin分布式鏈路問(wèn)題小結(jié)

    Sleuth(Micrometer)+ZipKin分布式鏈路問(wèn)題小結(jié)

    在微服務(wù)架構(gòu)中,分布式鏈路追蹤技術(shù)成為了解決系統(tǒng)復(fù)雜調(diào)用問(wèn)題的關(guān)鍵,本文介紹了其他鏈路追蹤方案,如Cat、Pinpoint和Skywalking,展示了分布式鏈路追蹤技術(shù)的多樣化,感興趣的朋友一起看看吧
    2024-10-10
  • 淺談spring-boot-rabbitmq動(dòng)態(tài)管理的方法

    淺談spring-boot-rabbitmq動(dòng)態(tài)管理的方法

    這篇文章主要介紹了淺談spring-boot-rabbitmq動(dòng)態(tài)管理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • IDEA 端口占用的解決方法(推薦)

    IDEA 端口占用的解決方法(推薦)

    這篇文章主要介紹了IDEA 端口占用的解決方法,本文通過(guò)兩種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題

    SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題

    這篇文章主要介紹了SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

徐州市| 灵川县| 来凤县| 瑞安市| 灵台县| 绥阳县| 安吉县| 哈密市| 班戈县| 如皋市| 乐山市| 喀喇沁旗| 昌平区| 阆中市| 高平市| 沂源县| 祥云县| 乌鲁木齐县| 上思县| 邻水| 洛南县| 卢氏县| 眉山市| 昭平县| 古蔺县| 宝兴县| 宁南县| 永昌县| 长岭县| 汤原县| 隆回县| 平邑县| 云霄县| 丹东市| 无极县| 多伦县| 皮山县| 通辽市| 区。| 胶南市| 汾西县|