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

java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列示例

 更新時(shí)間:2014年01月29日 11:13:08   作者:  
隊(duì)列是一種特殊的線性表,它只允許在表的前端(front)進(jìn)行刪除操作,只允許在表的后端(rear)進(jìn)行插入操作,下面介紹一下java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列的示例

(1)用數(shù)組實(shí)現(xiàn)的隊(duì)列:

復(fù)制代碼 代碼如下:
 
//先自己定義一個(gè)接口 
public interface NetJavaList { 
  public void add(Student t);    //繼承該接口的類必須實(shí)現(xiàn)的方法 
  public Student get(int index);//隊(duì)列的加入,取出,隊(duì)列的大小 
  public int size(); 


定義一個(gè)學(xué)生類

復(fù)制代碼 代碼如下:

class Student { 
    private String name ;   //私有屬性 名字,學(xué)分 
    private int score ; 
    public Student(String name , int score){ 
        this.name = name ; 
        this.score = score ; 
    } 
    public void printInfo(){ 
        System.out.println("姓名"+name + "學(xué)分"+score ) ; 
    } 

 實(shí)現(xiàn)自定義接口

復(fù)制代碼 代碼如下:

public class STList implements NetJavaList{ 
private Student[] str = new Student[0] ; 
    //增加隊(duì)列的元素 
    public void add(Student t) { 
        Student[] src = new Student[str.length+1]; 
        for(int i=0;i<str.length;i++){ 
            src[i]=str[i] ; 
        } 
        src[str.length]=t ; 
        str = src ; 
    } 

    //得到隊(duì)列中的某個(gè)元素 
    public Student get(int index) { 
        Student t = str[index]; 
        return t; 
    } 

    //返回隊(duì)列的長(zhǎng)度 
    public int size() { 

        return str.length; 
    } 


寫個(gè)主函數(shù)類實(shí)現(xiàn)下隊(duì)列

復(fù)制代碼 代碼如下:

public class Manager { 
    public static void main(String[] args) { 
        STList sil = new STList() ; 
        for(int i=0;i<5;i++){ 
        Student st = new Student("name"+i,i*10);     
        sil.add(st); 
        } 
       printList(sil) ; 

    } 
//輸出隊(duì)列中的所有元素 
  public static void printList(STList t){ 
      for(int i=0;i<t.size();i++){ 
          Student f =t.get(i); 
          f.printInfo(); 
      } 

  } 

 (2)鏈表實(shí)現(xiàn)的隊(duì)列
  先定義一個(gè)節(jié)點(diǎn)類;

復(fù)制代碼 代碼如下:

public class LinkNode { 
private Object obj ; //節(jié)點(diǎn)內(nèi)的數(shù)據(jù)對(duì)象 
private LinkNode next ; //對(duì)下一個(gè)節(jié)點(diǎn)的引用 
//在創(chuàng)建節(jié)點(diǎn)對(duì)象的時(shí)候就傳入節(jié)點(diǎn)的數(shù)據(jù)對(duì)象 
public LinkNode(Object obj){ 
    this.obj = obj ; 

public Object getObj(){ 
    return obj ; 

public void setObj(Object obj){ 
    this.obj = obj ; 


public LinkNode getNext(){ 
    return next ; 

public void setNext(LinkNode next){ 
    this.next =next ; 


 然后寫個(gè)隊(duì)列的實(shí)現(xiàn)方法類

復(fù)制代碼 代碼如下:

public class LinkList { 

    public static LinkNode root ;//第一個(gè)節(jié)點(diǎn) 
    public LinkNode last = null ;//最后的一個(gè)節(jié)點(diǎn) 
    public static void main(String ara[]){ 
        LinkList df = new LinkList() ; 
        df.add(1); 
        df.add(2); 
        df.add(3); 
        df.printLinkList(root); 
        df.move(root,2) ; 
        df.move(root,2) ; 
        df.printLinkList(root); 

    } 
    /*
     * 插入節(jié)點(diǎn)
     */ 
    public void add(Object obj){ 
        //創(chuàng)建一個(gè)新的節(jié)點(diǎn) 
        LinkNode t = new LinkNode(obj); 
        if(root ==null){ 
            root = t ; 
            last = root ; 
        }else{ 
            last.setNext(t); 
            last = t ; 
        } 

    } 
    /*
     * 輸出操作
     */ 
    public void printLinkList(LinkNode root){ 
        if(null != root){ 
            Object data = root.getObj(); 
            System.out.println(data); 
            LinkNode temp = root.getNext(); 
            printLinkList(temp) ; 
        } 
    } 
    /*
     * 刪除操作
     */ 
    public LinkNode move(LinkNode root,int index){ 
        if(this.getLength()<index || index <0){ 
            throw new RuntimeException("下標(biāo)越界:"+index + 
                ",size:" +this.getLength()) ; 
        }else{ 
        int count = 1 ;LinkNode sd = root ; 
         while(count!=index-1){ 
             sd = sd.getNext(); 

         } 

         
         sd.setNext(sd.getNext().getNext()); 
        return root ; 
    }} 

   /*
    * 得到鏈表的長(zhǎng)度
    */ 
      public int  getLength(){ 
        int count = 0 ; 
        if(root==null){ 
            return count ; 
        } 
        LinkNode node =root.getNext(); 
        while(null != node){ 
            count ++ ; 
            node=node.getNext(); 

        } 
        //System.out.println((count+1)); 
        return count+1 ; 
      } 

相關(guān)文章

  • 論java如何通過反射獲得方法真實(shí)參數(shù)名及擴(kuò)展研究

    論java如何通過反射獲得方法真實(shí)參數(shù)名及擴(kuò)展研究

    這篇文章主要為大家介紹了java如何通過反射獲得方法的真實(shí)參數(shù)名以及擴(kuò)展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪
    2022-01-01
  • 巧妙mybatis避免Where 空條件的尷尬

    巧妙mybatis避免Where 空條件的尷尬

    這篇文章主要介紹了巧妙mybatis避免Where 空條件的尷尬,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn)

    spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn)

    參數(shù)校驗(yàn)在很多地方都可以用到,本文主要介紹了spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 從零開始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器

    從零開始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器

    這篇文章主要給大家介紹了如何從零開始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器的相關(guān)資料,由于springboot是內(nèi)嵌了tomcat,所以可以直接將項(xiàng)目打包上傳至服務(wù)器上,需要的朋友可以參考下
    2021-11-11
  • Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組

    Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組

    數(shù)組是有序的元素序列,若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式
    2022-02-02
  • Spring之@Aspect中通知的5種方式詳解

    Spring之@Aspect中通知的5種方式詳解

    本文主要介紹了Spring之@Aspect中通知的5種方式詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • SpringCloud之分布式配置中心Spring Cloud Config高可用配置實(shí)例代碼

    SpringCloud之分布式配置中心Spring Cloud Config高可用配置實(shí)例代碼

    這篇文章主要介紹了SpringCloud之分布式配置中心Spring Cloud Config高可用配置實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 總結(jié)Java常用加解密方法AES?SHA1?md5

    總結(jié)Java常用加解密方法AES?SHA1?md5

    這篇文章主要為大家介紹了Java常用加密方法AES?SHA1?md5總結(jié)及示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java程序員面試中的多線程問題總結(jié)

    Java程序員面試中的多線程問題總結(jié)

    這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級(jí)工程師所問到。這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級(jí)工程師所問到。
    2016-11-11
  • MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟

    MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟

    這篇文章主要介紹了MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02

最新評(píng)論

礼泉县| 建昌县| 布尔津县| 柘城县| 增城市| 邢台县| 咸丰县| 介休市| 汉寿县| 罗定市| 祁门县| 化州市| 正镶白旗| 清水河县| 岳池县| 唐山市| 亳州市| 拉萨市| 九寨沟县| 柘荣县| 盐津县| 集安市| 福建省| 古丈县| 旌德县| 孟连| 河间市| 台东市| 西吉县| 仁化县| 乌兰察布市| 东乡县| 丹阳市| 中卫市| 安丘市| 绥滨县| 乡城县| 清水河县| 呼图壁县| 高密市| 墨脱县|