婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Java語言中鏈表和雙向鏈表

Java語言中鏈表和雙向鏈表

熱門標簽:怎樣把地圖標注出來 黃石智能營銷電銷機器人效果 地圖標注人員兼職 漯河辦理400電話 騰訊地圖標注商戶改名注冊入駐 電話機器人的特色和創新 淮南騰訊地圖標注 開封便宜外呼系統報價 商丘百應電話機器人有沒有效果

  鏈表是一種重要的數據結構,在程序設計中占有很重要的地位。C語言和C++語言中是用指針來實現鏈表結構的,由于Java語言不提供指針,所以有人認為在Java語言中不能實現鏈表,其實不然,Java語言比C和C++更容易實現鏈表結構。Java語言中的對象引用實際上是一個指針(本文中的指針均為概念上的意義,而非語言提供的數據類型),所以我們可以編寫這樣的類來實現鏈表中的結點。

  class Node
  {
  Object data;
  Node next;//指向下一個結點
  }

  將數據域定義成Object類是因為Object類是廣義超類,任何類對象都可以給其賦值,增加了代碼的通用性。為了使鏈表可以被訪問還需要定義一個表頭,表頭必須包含指向第一個結點的指針和指向當前結點的指針。為了便于在鏈表尾部增加結點,還可以增加一指向鏈表尾部的指針,另外還可以用一個域來表示鏈表的大小,當調用者想得到鏈表的大小時,不必遍歷整個鏈表。下圖是這種鏈表的示意圖:

  鏈表的數據結構

  我們可以用類List來實現鏈表結構,用變量Head、Tail、Length、Pointer來實現表頭。存儲當前結點的指針時有一定的技巧,Pointer并非存儲指向當前結點的指針,而是存儲指向它的前趨結點的指針,當其值為null時表示當前結點是第一個結點。那么為什么要這樣做呢?這是因為當刪除當前結點后仍需保證剩下的結點構成鏈表,如果Pointer指向當前結點,則會給操作帶來很大困難。那么如何得到當前結點呢,我們定義了一個方法cursor(),返回值是指向當前結點的指針。類List還定義了一些方法來實現對鏈表的基本操作,通過運用這些基本操作我們可以對鏈表進行各種操作。例如reset()方法使第一個結點成為當前結點。insert(Object d)方法在當前結點前插入一個結點,并使其成為當前結點。remove()方法刪除當前結點同時返回其內容,并使其后繼結點成為當前結點,如果刪除的是最后一個結點,則第一個結點變為當前結點。

  鏈表類List的源代碼如下:

  import java.io.*;
  public class List
  {
  /*用變量來實現表頭*/
  private Node Head=null;
  private Node Tail=null;
  private Node Pointer=null;
  private int Length=0;
  public void deleteAll()
  /*清空整個鏈表*/
  {
  Head=null;
  Tail=null;
  Pointer=null;
  Length=0;
  }
  public void reset()
  /*鏈表復位,使第一個結點成為當前結點*/
  {
  Pointer=null;
  }
  public boolean isEmpty()
  /*判斷鏈表是否為空*/
  {
  return(Length==0);
  }
  public boolean isEnd()
  /*判斷當前結點是否為最后一個結點*/
  {
  if(Length==0)
   throw new java.lang.NullPointerException();
  else if(Length==1)
   return true;
  else
   return(cursor()==Tail);
  }
  public Object nextNode()
  /*返回當前結點的下一個結點的值,并使其成為當前結點*/
  {
  if(Length==1)
   throw new java.util.NoSuchElementException();
  else if(Length==0)
   throw new java.lang.NullPointerException();
  else
  {
   Node temp=cursor();
   Pointer=temp;
   if(temp!=Tail)
    return(temp.next.data);
   else
    throw new java.util.NoSuchElementException();
  }
  }
  public Object currentNode()
  /*返回當前結點的值*/
  {
  Node temp=cursor();
  return temp.data;
  }
  
  public void insert(Object d)
  /*在當前結點前插入一個結點,并使其成為當前結點*/
  {
  Node e=new Node(d);
  if(Length==0)
  {
   Tail=e;
   Head=e;
  }
  else
  {
   Node temp=cursor();
   e.next=temp;
   if(Pointer==null)
    Head=e;
   else
    Pointer.next=e;
  }
  Length++;
  }
  public int size()
  /*返回鏈表的大小*/
  {
  return (Length);
  }
  public Object remove()
  /*將當前結點移出鏈表,下一個結點成為當前結點,如果移出的結點是最后一個結點,則第一個結點成為當前結點*/
  {
  Object temp;
  if(Length==0)
   throw new java.util.NoSuchElementException();
  else if(Length==1)
  {
   temp=Head.data;
   deleteAll();
  }
  else
  {
   Node cur=cursor();
   temp=cur.data;
   if(cur==Head)
    Head=cur.next;
   else if(cur==Tail)
   {
    Pointer.next=null;
    Tail=Pointer;
    reset();
   }
   else
    Pointer.next=cur.next;
    Length--;
  }
  return temp;
  }
  private Node cursor()
  /*返回當前結點的指針*/
  {
  if(Head==null)
   throw new java.lang.NullPointerException();
  else if(Pointer==null)
   return Head;
  else
   return Pointer.next;
  }
  public static void main(String[] args)
  /*鏈表的簡單應用舉例*/
  {
  List a=new List ();
  for(int i=1;i=10;i++)
   a.insert(new Integer(i));
   System.out.println(a.currentNode());
   while(!a.isEnd())
    System.out.println(a.nextNode());
    a.reset();
    while(!a.isEnd())
    {
     a.remove();
    }
    a.remove();
    a.reset();
    if(a.isEmpty())
     System.out.println("There is no Node in List \n");
     System.in.println("You can press return to quit\n");
    try
    {
     System.in.read();
     //確保用戶看清程序運行結果
    }
    catch(IOException e)
    {}
   }
  }
  class Node
  /*構成鏈表的結點定義*/
  {
   Object data;
   Node next;
   Node(Object d)
   {
    data=d;
    next=null;
   }
  }

  讀者還可以根據實際需要定義新的方法來對鏈表進行操作。雙向鏈表可以用類似的方法實現只是結點的類增加了一個指向前趨結點的指針。

  可以用這樣的代碼來實現:

  class Node
  {
  Object data;
  Node next;
  Node previous;
  Node(Object d)
  {
  data=d;
  next=null;
  previous=null;
  }
  }

  當然,雙向鏈表基本操作的實現略有不同。鏈表和雙向鏈表的實現方法,也可以用在堆棧和隊列的實現中,這里就不再多寫了,有興趣的讀者可以將List類的代碼稍加改動即可。

您可能感興趣的文章:
  • java數據結構之實現雙向鏈表的示例
  • Java中雙向鏈表詳解及實例
  • Java實現雙向鏈表(兩個版本)
  • java 實現雙向鏈表實例詳解
  • JAVA實現雙向鏈表的增刪功能的方法
  • java中使用雙向鏈表實現貪吃蛇程序源碼分享
  • java實現單鏈表、雙向鏈表
  • Java雙向鏈表倒置功能實現過程解析
  • Java雙向鏈表按照順序添加節點的方法實例

標簽:亳州 岳陽 武威 紅河 鄭州 拉薩 馬鞍山 大興安嶺

巨人網絡通訊聲明:本文標題《Java語言中鏈表和雙向鏈表》,本文關鍵詞  Java,語,言中,鏈表,和,雙向,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Java語言中鏈表和雙向鏈表》相關的同類信息!
  • 本頁收集關于Java語言中鏈表和雙向鏈表的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    粉嫩高潮美女一区二区三区 | 精品美女在线播放| 欧美性一级生活| av成人动漫在线观看| 成人avav在线| 91视视频在线观看入口直接观看www| 国产乱妇无码大片在线观看| 国产精品亚洲第一区在线暖暖韩国| 久久9热精品视频| 狠狠色狠狠色综合系列| 国产一区欧美日韩| 成人免费视频视频| 91视频91自| 91国产成人在线| 狠狠色2019综合网| 成人中文字幕合集| 99久精品国产| 91美女片黄在线| 在线观看亚洲精品视频| 欧美羞羞免费网站| 欧美日韩一区三区| 欧美精品粉嫩高潮一区二区| 91精品在线一区二区| 欧美一级淫片007| 久久久久久久综合狠狠综合| 久久老女人爱爱| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 午夜精品视频在线观看| 亚洲风情在线资源站| 日韩专区欧美专区| 精品无码三级在线观看视频| 国产一区久久久| 成人国产精品免费| 欧美性感一类影片在线播放| 欧美精品久久天天躁| 日韩一区二区三| 国产精品色婷婷| 一区二区在线观看免费视频播放| 亚洲成av人片一区二区三区| 五月激情综合色| 国产精品一区二区无线| 99这里只有精品| 欧美一卡2卡3卡4卡| 久久久蜜桃精品| 一区二区三区精品久久久| 美女视频黄久久| 成人高清免费观看| 91精品国产综合久久婷婷香蕉| 欧美大片拔萝卜| 亚洲男同性恋视频| 久久av资源网| 色综合中文字幕| 久久午夜羞羞影院免费观看| 夜夜精品视频一区二区| 国产真实乱对白精彩久久| 在线一区二区三区四区五区| 26uuu国产电影一区二区| 一区二区视频在线| 国产成人精品一区二区三区四区| 欧美日韩精品一区二区三区四区 | 日韩欧美一区二区不卡| 中文字幕视频一区二区三区久| 亚洲成人一区在线| 91色porny蝌蚪| 久久久亚洲综合| 午夜av电影一区| 波多野结衣中文字幕一区| 欧美va亚洲va| 视频在线观看国产精品| 91免费小视频| 中文字幕乱码久久午夜不卡 | 蜜桃精品视频在线| 色综合天天综合网天天看片| 久久久亚洲欧洲日产国码αv| 首页国产欧美久久| 色婷婷激情久久| 中文字幕在线不卡一区| 丁香桃色午夜亚洲一区二区三区| 这里只有精品99re| 五月综合激情网| 精品视频1区2区| 亚洲女与黑人做爰| 99re在线精品| 国产精品久久久久久久久久久免费看 | 国产精品国产自产拍高清av| 国产成人在线视频免费播放| 欧美日韩一二三| 午夜精品福利一区二区蜜股av| 色欧美乱欧美15图片| 国产精品家庭影院| 91网站视频在线观看| 国产精品三级在线观看| 国产成人免费视频网站高清观看视频| 欧美α欧美αv大片| 美女爽到高潮91| 久久这里只有精品视频网| 激情国产一区二区| 久久久国产一区二区三区四区小说| 久草热8精品视频在线观看| 久久夜色精品国产噜噜av | 337p日本欧洲亚洲大胆精品| 国产一区二区女| 国产精品乱码久久久久久 | 亚洲精品成人天堂一二三| 色综合视频在线观看| 亚洲综合免费观看高清在线观看| 色婷婷久久久综合中文字幕| 香蕉av福利精品导航| 欧美成人一区二区| 免费人成精品欧美精品 | 日韩在线卡一卡二| 精品三级在线观看| 91免费看片在线观看| 亚瑟在线精品视频| 精品国产一区二区三区久久久蜜月| 国产专区综合网| 一区二区三区小说| 欧美大度的电影原声| 丁香亚洲综合激情啪啪综合| 夜夜精品视频一区二区| 欧美一卡二卡在线观看| 99久久精品一区| 日韩国产一二三区| 国产精品久久久久永久免费观看| 欧美日韩视频专区在线播放| 国产乱码精品一区二区三区五月婷| 中文字幕综合网| 日韩欧美一区二区视频| 国内欧美视频一区二区| 欧美国产精品劲爆| 欧洲一区二区三区在线| 三级亚洲高清视频| 精品国产免费一区二区三区四区| 99riav一区二区三区| 精品亚洲porn| 午夜视频在线观看一区二区| 国产欧美视频在线观看| 日韩一区二区三区免费看| 色悠久久久久综合欧美99| 国产麻豆91精品| 免费一级片91| 无吗不卡中文字幕| 一区二区三区在线观看国产| 日本一区二区三区四区| 日韩欧美国产午夜精品| 欧美性大战久久| 色一区在线观看| 成人中文字幕合集| 国产乱对白刺激视频不卡| 日本中文一区二区三区| 亚洲一区二区三区小说| 国产精品免费av| 欧美国产日本视频| 久久精品人人爽人人爽| 欧美电影免费观看高清完整版在 | 成人在线一区二区三区| 国精产品一区一区三区mba桃花| 亚洲电影一区二区三区| 一区二区三区中文在线观看| 亚洲欧洲av在线| 国产精品黄色在线观看| 国产精品免费视频一区| 国产精品三级电影| 国产精品美女久久久久久久| 中文字幕不卡在线| 国产欧美日韩不卡免费| 中文字幕乱码日本亚洲一区二区 | 国产精品一区二区男女羞羞无遮挡 | 色香色香欲天天天影视综合网| 国产成都精品91一区二区三| 日本免费在线视频不卡一不卡二| 一区二区高清视频在线观看| 亚洲精品国产第一综合99久久| 136国产福利精品导航| 中文字幕在线不卡| 亚洲色图欧美偷拍| 亚洲精品大片www| 亚洲国产精品视频| 日韩 欧美一区二区三区| 久久av中文字幕片| 成人免费黄色大片| 欧美主播一区二区三区美女| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美色爱综合网| 精品日韩成人av| 国产精品国产三级国产有无不卡 | 久久色中文字幕| 国产精品网曝门| 一区二区三区资源| 青青草原综合久久大伊人精品 | 91麻豆免费观看| 欧美日韩精品免费观看视频| 日韩一区二区三区在线| 久久嫩草精品久久久精品| 亚洲特黄一级片| 免费成人在线播放| 99re66热这里只有精品3直播 | 欧美日韩在线播| 日韩一区二区电影在线| 国产日韩影视精品|