1. 程式人生 > >java中連結串列功能的實現

java中連結串列功能的實現

今天我們學習了java的連結串列資料結構的實現,建立一個Node類,裡面定義資料和一個Node類,然後是構造方法傳值。

類裡面定義4個方法,分別可以獲取和設定類的Node類指向和資料。

然後再建立一個MyLinkList類來定義我自己的操作連結串列資料結構的方法,分別由增刪查改的功能。

今天我只是實現了:1.獲取連結串列長度 2.增加資料 3.查詢節點 4.插入資料 5.修改資料 。

刪除資料我還沒有實現。

下面是我的程式碼:

package 我的連結串列;

public class MyLinkList {
	//建立頭結點
	private Node head;
	
	public int size(){
		if(head == null){
			return 0;
		}
		int size = 1;
		Node node = head;
		while(node.getNext() != null){
			node = node.getNext();
			size++;
		}
		return size;
	}
	//增加一個節點
	public void add(String value){
		Node newNode = new Node(value);
		//如果頭結點為空,直接新增到頭結點
		if(head == null){
			head = newNode;
			return ;
		}
		//否則新增到末尾
		Node node = head;
		while(node.getNext() != null){
			node = node.getNext();
		}
		node.setNext(newNode);
	}
	//刪除一個節點
	public boolean delete(String value){
		return false;
	}
	public boolean delete(int index){
		return false;
	}
	//查詢一個節點
	public String getValue(int index){
		if(index>size()||index<0){
			try {
				throw new Exception("下標越界");
			} catch (Exception e) {
				e.printStackTrace();
			}
			return null;
		}
		int count = 0;
		Node node = head;
		while(count != index){
			node = node.getNext();
			count++;
		}
		return node.getValue();
	}
	//插入一個節點
	public boolean insert(String value,int index){
		if(index<0||index>size()){
			try {
				throw new Exception("輸入下標越界");
			} catch (Exception e) {
				e.printStackTrace();
			}
			return false;
		}
		if(size() == 0){
			head = new Node(value);
			return true;
		}else if(index == 0){
			Node newNode = new Node(value);
			Node node = head;
			head = newNode;
			head.setNext(node);
			return true;
		}
		Node newNode = new Node(value);
		Node node = head;
		int count = 0;
		while(count!=index-1){
			node = node.getNext();
			count++;
		}
		Node nodeNext = node.getNext();
		node.setNext(newNode);
		newNode.setNext(nodeNext);
		return true;
	}
	//修改一個節點
	public boolean update(String value,int index){
		if(index>size()||index<0){
			try {
				throw new Exception("下標越界");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		int count = 0;
		Node node = head;
		while(count != index){
			node = node.getNext();
			count++;
		}
		node.setValue(value);
		return true;
	}
}
這是我操作資料結構的程式碼。

然後我用資料測試結果如下圖:


今天暫時先搞這麼多,洗洗睡。大笑

相關推薦

java連結串列功能實現

今天我們學習了java的連結串列資料結構的實現,建立一個Node類,裡面定義資料和一個Node類,然後是構造方法傳值。 類裡面定義4個方法,分別可以獲取和設定類的Node類指向和資料。 然後再建立一個MyLinkList類來定義我自己的操作連結串列資料結構的方法,分別由增刪

JAVA連結串列實現

以下程式碼是建立一個連結串列並輸出,其中主要用到了內部類,連結串列的實現是面試中常常遇到的問題,除了連結串列輸出外也可能遇到連結串列的刪除、查詢等,參照連結串列的輸出,其他的功能實現並不難。 import java.util.ArrayList; import java.u

Java 使用連結串列實現佇列功能

/** * 連結串列元素定義 * Create by zxb on 2017/8/27 */ public class Element<T> { private Element<T> next; private T valu

連結串列的c語言實現以及根據linux核心連結串列實現過程

轉自 : http://blog.csdn.net/lickylin/article/details/8010618 連結串列,就是用一組任意的儲存單元儲存線性表元素的一種資料結構。連結串列又分為單鏈表、雙向連結串列和迴圈連結串列等。 下面程式碼是連結串列的兩種實現方式

Java連結串列相關演算法

如下為連結節點,後續都用此表示連結節點 class ListNode{ int value; ListNode next; public ListN

Java雙向連結串列實現

最近在複習Java的基礎知識,看到了List時,想起學習C++時,曾用結構體構造有頭連結串列,所以好奇如何使用Java構造連結串列,遂有了如下程式碼: 實現了連結串列的雙向新增,雙向遍歷,刪除值; 本例中,頭結點和尾節點是單獨出來的,value屬性為null

Java連結串列實現

上一篇實現了佇列,這一篇我們實現棧。 棧是後入先出的資料結構。 連結串列中插入資料有頭插法和尾插法,本篇我們使用頭插法。 不多說直接上程式碼 連結串列的節點定義和上一篇使用的是同一個,可以參考上一篇。 public class StackImpl<T> { p

Java連結串列實現佇列

佇列--先入先出 棧---後入先出 連結串列實現佇列和棧。首先我們需要構建一個連結串列。連結串列有哪幾要素?   1、連結串列本身的value 2、連結串列的next指標,next指標指的還是同樣型別的值。 下邊看程式碼 public class Element&l

基於java自帶連結串列結構實現迴圈連結串列

背景 有些場景下,需要迴圈連結串列,如某些狀態是從一個到下一個,最後再回到開始。此種情況下,可以採用迴圈連結串列來實現。 程式碼 package com.cxyzy.tencentfacerec; import java.util.Iterator; import java.u

Java連結串列儲存物件的問題

  在刷《劍指OFFER》的時候,自己犯了一個錯誤,發現:在連結串列中儲存一個物件時,如果該物件是不斷變化的,則應該建立一個新的物件複製該物件的內容(而不是指向同一個物件),將這個新的物件儲存到連結串列中。如果直接儲存該物件的話,連結串列中的物件也會不斷變化。基本資料型別和String則沒有這種問題。 其實

java連結串列實現leetcode題

package leetcode; public class AddTwoNumbers { /** * 兩個連結串列相加 * input: (2 -> 4 -> 3) +(5->6->4) * output: 7->0->8

Java版資料結構之迴圈連結串列實現

簡介 在指定結點後新增一個結點 刪除指定結點的下一個結點 獲取下一個結點 獲取結點資料 public class LoopNode { int data;//資料域 LoopNode next;//下一個結點 public Loop

20-java 物件連結串列空沒空呢 java判斷list是否為空的用法

 寫了一個 物件連結串列,往裡面add了一些物件,最後我想看下連結串列是否為空,用  == null  為假,也看不出, 看下長度? 好吧, size() = 1; 列印  null ,  那到底是不是空 啊, 仔細想下,連結串列裡面應該不空,size( )

Java 單向連結串列和單向迴圈連結串列的程式碼實現

這個連結串列,以前上學的時候,學c語言,還是資料結構的時候,學過。也許也實現過吧。下面我就簡單記錄下這個連結串列的實現。 單向連結串列跟單向迴圈連結串列的差別就是:單向連結串列是有結束位的,指向null的時候,就到結尾了,但是單向迴圈連結串列,他就是一個圈,要是不設定指定位

Java資料結構——迴圈連結串列實現

一、描述 迴圈連結串列:表中的最後一個節點的指標域指向頭結點,整個連結串列形成一個環。 迴圈連結串列判空條件:有的說是判斷p或p->next是否等於頭指標,有的說判斷tail是否等於head,有的說判斷head是否為空,這其實要根據實際情況來判斷。若是

Java連結串列實現

     傳統的物件陣列一旦宣告則長度不可改變,因此,操作起來較為繁雜。 連結串列從本質上講可以理解為“動態的物件陣列”。連結串列可以實現物件的增加、刪除、查詢等等一系列的操作,可以實現動態擴充。如下為連結串列的實現: package cn.mldn.java; // 1

Java異或運算實現兩個整數的交換以及其功能函式實現

       今天學習到一種超酷炫的交換兩個整數的方法,給各位分享一下。異或運算屬於位運算的一種,首先簡單介紹一下異或預算的語法規則。 假設a與b為不相等的兩個整數。 (1)a^a=0; (2)a^b

java自定義鎖實現synchronized功能

public class Test {private static long count = 0;private Lock lock = new Lock();private int m = 0;private int a = 0;private int b = 0;pub

java使用連結串列實現棧(先進後出)

public class LinkStack <Item> implements Iterable<Item>{ private Node first;//棧頂

java的雙向連結串列簡單實現

 package com.test; public class SecondTest {  public static void main(String[] args) {   DoubleList test=new DoubleList();   test.Inse