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

Java版數(shù)據(jù)結(jié)構(gòu)插入數(shù)據(jù)時遇到的結(jié)點(diǎn)為空的問題詳解

 更新時間:2019年09月10日 08:30:08   作者:Devil瑞  
這篇文章主要介紹了Java版數(shù)據(jù)結(jié)構(gòu)插入數(shù)據(jù)時遇到的結(jié)點(diǎn)為空的問題及解決辦法,需要的朋友們可以學(xué)習(xí)下。

在演示Java版數(shù)據(jù)結(jié)構(gòu)與算法教材中的頭插法代碼時遇到了空結(jié)點(diǎn)問題 。 先上代碼。

鏈表類

import java.util.Scanner;

 public class ListLinked<T> {
   ListLinkedNode<Integer> head=new ListLinkedNode<Integer>();//聲明頭結(jié)點(diǎn)
  //添加結(jié)點(diǎn)
  public void addFromHead(int e){
    ListLinkedNode<Integer> p=new ListLinkedNode<Integer>();//聲明并創(chuàng)建結(jié)點(diǎn)p為插入結(jié)點(diǎn)
    p.setData(e);
    p.setNext(head.getNext());
    head.setNext(p);//將p插入到頭結(jié)點(diǎn)后
  }
  //頭插法創(chuàng)建鏈表
  public static ListLinked<Integer> createFromHead() {
    ListLinked<Integer> listLinked=new ListLinked<>();//初始化鏈表
    System.out.println("-頭插法建立鏈表-");
    System.out.println("請輸入鏈表長度:");
    Scanner sc=new Scanner(System.in);
    //n : 鏈表長度
    int n=sc.nextInt();
    System.out.println("請輸入值:");
    for(int i=0;i<n;i++) {
      System.out.print("請輸入第"+(i+1)+"個值:");
      int e=sc.nextInt();
      listLinked.addFromHead(e);
    }
    System.out.println("鏈表創(chuàng)建完畢");
    return listLinked;
  }
  //輸出
  public void display() {
    System.out.println("{");
    ListLinkedNode<Integer> p=new ListLinkedNode<Integer>();
    p=head.getNext();
    while(p!=null) {
      int value=p.getData();
      System.out.println(value);
      p=p.getNext();
    }
    System.out.println("}");
  }

}

節(jié)點(diǎn)類

public class ListLinkedNode<T>{
  //數(shù)據(jù)成員
  private T data;
  private ListLinkedNode<T> next;
  //獲得數(shù)據(jù)域
  public T getData() {
    return data;
  }
  //設(shè)置數(shù)據(jù)域
  public void setData(T data) {
    this.data=data;
  }
  //得到指針域
  public ListLinkedNode<T> getNext(){
    return next;
  }
  //設(shè)置指針域
  public void setNext(ListLinkedNode<T> next) {
    this.next=next;
  }
  //有參構(gòu)造函數(shù)
  public ListLinkedNode(T data) {
    this.data=data;
    this.next=null;
  }
  //無參構(gòu)造函數(shù)
  public ListLinkedNode() {
    
  }
}

測試類

public class test {
  public static void main(String[] args) {
    ListLinked list=new ListLinked();
    list.createFromHead();
    list.display();
  }

}

測試,在判斷p是否為空執(zhí)行輸出的時候,p一直為null。 

打斷點(diǎn)調(diào)試的時候發(fā)現(xiàn)了問題所在。

因?yàn)閖ava把引用類型當(dāng)作了指針,所以在addFromHead方法里,head里的next存的是p對象的地址。

當(dāng)出了addFromHead方法,局部變量p的生命周期結(jié)束被垃圾回收機(jī)制帶走

棧中沒有變量再指向之前在堆中的p對象,所以堆中的對象也被當(dāng)作了垃圾被帶走,head的next又變成了null

 

以上就是Java版數(shù)據(jù)結(jié)構(gòu)插入數(shù)據(jù)時遇到的結(jié)點(diǎn)為空的問題的全部內(nèi)容,感謝大家對腳本之家的支持。

相關(guān)文章

  • 詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則

    詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則

    這篇文章主要介紹了詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Java的MyBatis框架中MyBatis Generator代碼生成器的用法

    Java的MyBatis框架中MyBatis Generator代碼生成器的用法

    這篇文章主要介紹了Java的MyBatis框架中Mybatis Generator代碼生成器的用法,Mybatis Generator主要被用來生成繁瑣的配置文件來提高效率,需要的朋友可以參考下
    2016-04-04
  • Spring整合Junit的使用詳解

    Spring整合Junit的使用詳解

    這篇文章主要介紹了Spring整合Junit的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • SpringCloud feign服務(wù)熔斷下的異常處理操作

    SpringCloud feign服務(wù)熔斷下的異常處理操作

    這篇文章主要介紹了SpringCloud feign服務(wù)熔斷下的異常處理操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringCloud對服務(wù)內(nèi)某個client進(jìn)行單獨(dú)配置的操作步驟

    SpringCloud對服務(wù)內(nèi)某個client進(jìn)行單獨(dú)配置的操作步驟

    我們的微服務(wù)項(xiàng)目用的是springCloud,某個微服務(wù)接口因?yàn)閿?shù)據(jù)處理量大,出現(xiàn)了接口超時的情況,我們需要單獨(dú)修改這一個feignClient的超時時間,所以本文介紹了SpringCloud對服務(wù)內(nèi)某個client進(jìn)行單獨(dú)配置的操作步驟,需要的朋友可以參考下
    2023-10-10
  • SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過程(后端)

    SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過程(后端)

    這篇文章主要介紹了SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過程(后端),快速生成后端代碼、封裝結(jié)果集、增刪改查、模糊查找,畢設(shè)基礎(chǔ)框架,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • java實(shí)現(xiàn)客房管理系統(tǒng)

    java實(shí)現(xiàn)客房管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)客房管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Java對xls文件進(jìn)行讀寫操作示例代碼

    Java對xls文件進(jìn)行讀寫操作示例代碼

    Java開發(fā)項(xiàng)目中經(jīng)常會碰到處理Excel文件中數(shù)據(jù)的情況,下面這篇文章主要給大家介紹了利用Java對xls文件進(jìn)行讀寫操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • Java?詳細(xì)分析四個經(jīng)典鏈表面試題

    Java?詳細(xì)分析四個經(jīng)典鏈表面試題

    兄弟們,編程,當(dāng)我們學(xué)習(xí)完數(shù)據(jù)結(jié)構(gòu)的時候,你就會有一種豁然開朗的感覺。算是真正的入了編程的門,所以打好數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)是特別特別重要的
    2022-03-03
  • Java深入分析動態(tài)代理

    Java深入分析動態(tài)代理

    動態(tài)代理指的是,代理類和目標(biāo)類的關(guān)系在程序運(yùn)行的時候確定的,客戶通過代理類來調(diào)用目標(biāo)對象的方法,是在程序運(yùn)行時根據(jù)需要動態(tài)的創(chuàng)建目標(biāo)類的代理對象。本文將通過案例詳細(xì)講解一下Java動態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-07-07

最新評論

明光市| 天镇县| 桂东县| 广安市| 林州市| 巴青县| 岚皋县| 横山县| 天津市| 佛山市| 托克托县| 邹城市| 洱源县| 罗平县| 万源市| 张家界市| 焦作市| 嘉鱼县| 锦州市| 衡阳县| 五大连池市| 柘荣县| 岱山县| 牡丹江市| 武义县| 武宁县| 嘉黎县| 双江| 上杭县| 华阴市| 南和县| 潼关县| 江门市| 晋城| 建昌县| 铁力市| 青川县| 溆浦县| 南召县| 资溪县| 且末县|