日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java查找链表中间元素_如何通过Java单次查找链表的中间元素

發布時間:2023/12/3 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java查找链表中间元素_如何通过Java单次查找链表的中间元素 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java查找鏈表中間元素

您如何一次找到LinkedList的中間元素是一個編程問題,在電話采訪中經常問Java和非Java程序員。 這個問題類似于檢查回文或
計算階乘 ,有時Interviewer還會要求編寫代碼。 為了回答這個問題,候選人必須熟悉LinkedList的數據結構,即在單個LinkedList的情況下,Linked List的每個節點都包含數據和指針,這是下一個Linked List的地址,并且Singly Linked List的最后一個元素指向空值。 因為要找到鏈表的中間元素,您需要找到鏈表的長度,即計算元素的長度直到結束,即直到找到鏈表的最后一個元素。
是什么使得這個數據結構面試問題有趣,是您需要找到inkedList的中間元素 一口氣 ,您不知道LinkedList的長度。

無論是否熟悉時空權衡等,這都是考生邏輯能力的考驗。

就像您仔細考慮過一樣,您可以使用兩個指針來解決此問題,如我上一篇有關如何在Java中查找單鏈接列表的長度的文章中所述 。

通過使用兩個指針,在每次迭代中增加一個指針,并在每第二次迭代中增加另一個指針。 當第一個指針指向鏈接列表的末尾時,第二個指針將指向鏈接列表的中間節點。

實際上,這種兩指針方法可以解決多個類似的問題,例如
如何在一個迭代中從鏈表中的最后一個查找第三個節點,或如何從鏈表中的末個查找第N個元素。 在本Java編程教程中,我們將看到一個Java程序,該Java程序在一個迭代中找到“鏈表”的中間元素。

如何通過一遍查找LinkedList的中間元素

這是一個完整的Java程序,用于查找Java中“鏈表”的中間節點。 請記住,這里的LinkedList類是我們的自定義類,不要將該類與java.util.LinkedList混淆,該類是Java中流行的Collection類。

在此Java程序中,我們的類LinkedList表示一個鏈表數據結構,該結構包含節點的集合并具有頭和尾。

每個節點包含數據和地址部分。 主要方法
LinkedListTest類用于模擬問題,我們在其中創建了鏈表,并在鏈表上添加了一些元素,然后對其進行迭代以在Java中通過一次查找鏈表的中間元素。

import test.LinkedList.Node;/*** Java program to find middle element of linked list in one pass.* In order to find middle element of a linked list * we need to find the length first but since we can only * traverse linked list one time, we will have to use two pointers* one which we will increment on each iteration while * other which will be incremented every second iteration.* So when the first pointer will point to the end of a * linked list, second will be pointing to the middle * element of a linked list** @author Javin Paul*/ public class LinkedListTest {public static void main(String args[]) {//creating LinkedList with 5 elements including headLinkedList linkedList = new LinkedList();LinkedList.Node head = linkedList.head();linkedList.add( new LinkedList.Node("1"));linkedList.add( new LinkedList.Node("2"));linkedList.add( new LinkedList.Node("3"));linkedList.add( new LinkedList.Node("4"));//finding middle element of LinkedList in single passLinkedList.Node current = head;int length = 0;LinkedList.Node middle = head;while(current.next() != null){length++;if(length%2 ==0){middle = middle.next();}current = current.next();}if(length%2 == 1){middle = middle.next();}System.out.println("length of LinkedList: " + length);System.out.println("middle element of LinkedList : " + middle);} }class LinkedList{private Node head;private Node tail;public LinkedList(){this.head = new Node("head");tail = head;}public Node head(){return head;}public void add(Node node){tail.next = node;tail = node;}public static class Node{private Node next;private String data;public Node(String data){this.data = data;}public String data() {return data;}public void setData(String data) {this.data = data;}public Node next() {return next;}public void setNext(Node next) {this.next = next;}public String toString(){return this.data;}} }Output: length of LinkedList: 4 middle element of LinkedList: 2

一站式介紹如何查找LinkedList的中間元素。 正如我所說的,這是一個很好的面試問題,可以將程序員與非程序員分開。 此外,此處提到的用于查找LinkedList中間節點的技術可用于從Last或
LinkedList中最后一個元素的第n個元素。

如果您喜歡這篇文章,并想嘗試一些更具挑戰性的編程練習,那么請看以下來自各種訪談的編程問題:

  • 如何檢查LinkedList是否包含Java中的任何循環? ( 解決方案 )
  • 如何在Java中搜索數組中的元素? ( 解決方案 )
  • 如何使用冒泡排序算法對數組進行排序? ( 算法 )
  • 如何在Java中計算數字的總和? ( 解決方案 )
  • 編寫程序來查找Java中String中的第一個非重復字符? ( 程序 )
  • 如何檢查數字在Java中是否為二進制? ( 回答 )
  • 編寫程序以檢查數字是否為素數? ( 解決方案 )
  • 如何防止Java死鎖? ( 解決方案 )
  • 如何在Java中找到數字的最大素數? ( 解決方案 )
  • 如何在Java中使用遞歸計算階乘? ( 算法 )
  • 如何在Java中聲明和初始化二維數組? ( 解決方案 )
  • 編寫一種方法來計算字符串中字符的出現次數? ( 解決方案 )
  • 如何檢查號碼是否是阿姆斯特朗號碼? ( 解決方案 )
  • 編寫一個程序,而不使用Collection API從數組中刪除重復項? ( 程序 )
  • 如何在不使用API??方法的情況下反轉Java中的String? ( 解決方案 )
  • 寫一個方法來從Java中的ArrayList中刪除重復項? ( 解決方案 )
  • 編寫程序以檢查數字是否為回文? ( 程序 )
  • 編寫程序以檢查數組是否包含重復的數字? ( 解決方案 )
  • 如何找到不超過給定數字的斐波那契數列? ( 解決方案 )
  • 編寫程序以查找排序數組中的缺失數字? ( 算法 )
  • 關于Java數組有10點? ( 必須知道事實 )
  • 如何在Java中找到整數數組的前兩個最大值? ( 解決方案 )
  • 編寫一種方法來檢查兩個String是否是彼此的Anagram? ( 方法 )
  • 如何找到數組中最大和最小的數字? ( 解決方案 )
  • 編寫函數一次找到鏈接列表的中間元素? ( 解決方案 )
  • 如何解決Java中的生產者-消費者問題。 ( 解決方案 )
  • 編寫程序以檢查數字是否為2的冪? ( 程序 )

到目前為止,感謝您閱讀此編碼面試問題。 如果您喜歡這個String面試問題,請與您的朋友和同事分享。 如果您有任何問題或反饋,請發表評論。

翻譯自: https://www.javacodegeeks.com/2019/03/middle-element-linked-list-java-single-pass.html

java查找鏈表中間元素

總結

以上是生活随笔為你收集整理的java查找链表中间元素_如何通过Java单次查找链表的中间元素的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。