欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

      如何對(duì)java鏈表進(jìn)行增、刪、查、改操作-創(chuàng)新互聯(lián)

      如何對(duì)java鏈表進(jìn)行增、刪、查、改操作?針對(duì)這個(gè)問題,今天小編總結(jié)了這篇文章,希望能幫助更多想解決這個(gè)問題的朋友找到更加簡(jiǎn)單易行的辦法。

      創(chuàng)新互聯(lián)建站專注于桑植企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),購物商城網(wǎng)站建設(shè)。桑植網(wǎng)站建設(shè)公司,為桑植等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

      鏈表也是一個(gè)線性的數(shù)據(jù)結(jié)構(gòu),與數(shù)組不同的是,鏈表在內(nèi)存中的存儲(chǔ)方式是隨機(jī)存儲(chǔ)。

      下面給出涵蓋鏈表四個(gè)操作的一個(gè)完整的例子,有幾點(diǎn)需要注意的是:

      (一)在增刪改查之前,都需要對(duì)給出的下標(biāo)進(jìn)行邊界判斷;

      (二)增加一個(gè)名為last的節(jié)點(diǎn),可以方便在鏈表的尾部進(jìn)行操作,省去了查找到最后一個(gè)節(jié)點(diǎn)的時(shí)間復(fù)雜度;

      (三)在鏈表的內(nèi)部插入元素時(shí),我們先找到要插入位置的前一個(gè)節(jié)點(diǎn)prevNode,然后可以記錄下prevNode的next,插入時(shí)先將prevNode的next指向要插入的節(jié)點(diǎn),再將要插入的節(jié)點(diǎn)的next指向當(dāng)前的next。這一點(diǎn)和C++中的操作也略有不同;

      (四)刪除節(jié)點(diǎn)時(shí),用removedNode來記錄刪除節(jié)點(diǎn)的返回值,并且不要忘了size要減1。

      操作示例如下:

      public class MyLinkedList {
          //定義一個(gè)靜態(tài)的內(nèi)部類
          private static class Node{
              int data;
              Node next;
              Node(int data){
                  this.data = data;
              }
          }
       
          private Node head;
          private Node last;//為了方便尾部插入元素的操作
          private int size;//size表示鏈表的實(shí)際長(zhǎng)度
       
          public void insert(int data, int index)throws Exception{
              if(index < 0 || index > size)
                  throw new IndexOutOfBoundsException("超出鏈表節(jié)點(diǎn)范圍!");
              Node insertedNode = new Node(data);
              if(size == 0){//插入第一個(gè)元素時(shí)元素個(gè)數(shù)為0
                  head = insertedNode;
                  last = insertedNode;
              }else if(size == index){//在鏈表的末尾插入
                  last.next = insertedNode;
                  last = insertedNode;
              }else{
                  Node prevNode = get(index - 1);
                  Node nextNode = prevNode.next;
                  prevNode.next = insertedNode;
                  insertedNode.next = nextNode;
              }
              size++;
          }
       
          public void update(int data, int index) throws Exception{
              if(index < 0 || index >= size)
                  throw new IndexOutOfBoundsException("超出鏈表節(jié)點(diǎn)范圍!");
              if(index == 0)
                  head.data = data;
              else if(index == size - 1)
                  last.data = data;
              else{
                  Node temp = get(index);
                  temp.data = data;
              }
          }
       
          public Node remove(int index) throws Exception {
              if(index < 0 || index >= size){
                  throw new IndexOutOfBoundsException("超出鏈表節(jié)點(diǎn)范圍!");
              }
              Node removedNode = null;//不給removedNode分配堆內(nèi)存
              if(index == 0){
                  removedNode = head;
                  head = head.next;
              }
              else if(index == size - 1){
                  //刪除尾結(jié)點(diǎn)
                  Node prevNode = get(index - 1);
                  removedNode = prevNode.next;
                  prevNode.next = null;
                  last = prevNode;
              }
              else{
                  Node prevNode = get(index - 1);
                  Node nextNode = prevNode.next.next;
                  removedNode = prevNode.next;
                  prevNode.next = nextNode;
              }
              size--;
              return removedNode;
          }
       
       
       
          //查找鏈表元素
          public Node get(int index) throws Exception{
              if(index < 0 || index >= size){
                  throw new IndexOutOfBoundsException("超出鏈表節(jié)點(diǎn)范圍!");
              }
              Node temp = head;
              for(int i = 0; i < index; i++){
                  temp = temp.next;
              }
      //        size--;
              return temp;
          }
       
          //輸出鏈表
          public void output(){
              Node temp = head;
              while(temp != null){
                  System.out.println(temp.data);
                  temp = temp.next;
              }
          }
       
          public static void main(String[] args) throws Exception{
              MyLinkedList myLinkedList = new MyLinkedList();
              myLinkedList.insert(3,0);
              myLinkedList.insert(7,1);
              myLinkedList.insert(9,2);
              myLinkedList.insert(5,3);
              myLinkedList.insert(6,1);
              myLinkedList.remove(0);
              myLinkedList.update(2,1);
              myLinkedList.output();
              System.out.println(myLinkedList.size);
          }
      }

      關(guān)于對(duì)java鏈表進(jìn)行增、刪、查、改操作的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

      文章題目:如何對(duì)java鏈表進(jìn)行增、刪、查、改操作-創(chuàng)新互聯(lián)
      標(biāo)題路徑:http://chinadenli.net/article20/dhshco.html

      成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷軟件開發(fā)電子商務(wù)網(wǎng)站改版

      廣告

      聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

      搜索引擎優(yōu)化