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

Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入

 更新時(shí)間:2021年02月04日 10:09:39   作者:小玉IU  
這篇文章主要介紹了Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

PS:鏈表是一種數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)結(jié)構(gòu)就是一種存放數(shù)據(jù)的方式。

為什么需要鏈表?

我們知道,數(shù)組也可以存儲(chǔ)數(shù)據(jù),那么為什么還需要鏈表呢?接下來,我們來看看數(shù)組 和鏈表的區(qū)別:

1、數(shù)組就像身上編了號(hào)站成一排的人,要找第10個(gè)人很容易,根據(jù)人身上的編號(hào)很快就能找到。但插入、刪除慢,要往某個(gè)位置插入或刪除一個(gè)人時(shí),后面的人身上的編號(hào)都要變。當(dāng)然,加入或刪除的人始終末尾的也快。

2、鏈表就像手牽著手站成一圈的人,要找第10個(gè)人不容易,必須從第一個(gè)人一個(gè)個(gè)數(shù)過去。但插入、刪除快。插入時(shí)只要解開兩個(gè)人的手,并重新牽上新加進(jìn)來的人的手就可以。刪除一樣的道理。

鏈表示意圖

鏈表的建立

class TestLink{//創(chuàng)建一個(gè)外部類	
	private Entry head;//指向頭結(jié)點(diǎn)的引用
	public TestLink(){
		head = new Entry();//用結(jié)點(diǎn)類 new 一個(gè)頭結(jié)點(diǎn)
	}
	
	class Entry{//Entry 創(chuàng)建一個(gè)結(jié)點(diǎn)內(nèi)部類
		int data;//定義數(shù)據(jù)塊
		Entry next;//定義地址塊
		
		public Entry(){//構(gòu)造方法1
			data = -1;//對(duì)結(jié)點(diǎn)數(shù)據(jù)塊初始化
			next = null;//對(duì)地址初始化
		}
		public Entry(int val){//構(gòu)造方法2
			data = val;//對(duì)數(shù)據(jù)塊賦值
			next = null;
		}
	}
}
public class TestDemo2 {
			public static void main(String[] args) {
				TestLink testlink = new TestLink();
				//創(chuàng)建一個(gè) 鏈表外部類 對(duì)象
  }
}

頭插法:從頭插入

public void insertHead(int val){
  //有這么一個(gè)結(jié)點(diǎn) 
  Entry cur = new Entry(val);
  cur.next = head.next;
  head.next = cur;
  }

頭插法示意圖:

尾插法:從尾插入

public void insertTail(int val){
				//找到尾巴
				Entry cur = head;
				while(cur.next != null){//遍歷結(jié)點(diǎn)
					cur = cur.next;
				}
				Entry entry = new Entry(val);//得到的結(jié)點(diǎn)
				cur.next = entry;
			}

尾插法示意圖:

從任意結(jié)點(diǎn)插入

public boolean insertPos(int val,int pos){
  //1、判斷pos的合法性
  if(pos < 0 || pos >= getLength()+1){
   return false;
  }
  Entry cur = head;
  for(int i = 0;i <= pos-1;i++){
   cur = cur.next;
  }
  //cur  pos的前一個(gè)
  Entry entry = new Entry(val);
  entry.next = cur.next;
  cur.next = entry;
  return true;
  }

示意圖:

完整代碼:

package LianBiao;
class TestLink1{	
	private Entry head;//指向頭結(jié)點(diǎn)的引用	
	public TestLink1(){
		head = new Entry();
	}
	
	class Entry{//Entry Node 
		int data;
		Entry next;		
		public Entry(){
			data = -1;
			next = null;
		}
		
		public Entry(int val){
			data = val;
			next = null;
		}		
	}	
	
	public void insertHead(int val){
		//有這么一個(gè)結(jié)點(diǎn) 
		Entry cur = new Entry(val);
		cur.next = head.next;
		head.next = cur;
		/*head.next = cur;
		cur.next = head.next;*/
	}
	
	public void insertTail(int val){
		//找到尾巴
		Entry cur = head;
		while(cur.next != null){
			cur = cur.next;
		}
		Entry entry = new Entry(val);//得到的結(jié)點(diǎn)
		cur.next = entry;
	}
	//得到單鏈表的長(zhǎng)度:
	public int getLength(){
		int len = 0;
		Entry cur = head.next;
		while(cur != null){
			len++;
			cur = cur.next;
		}
		return len;
	}
	//將數(shù)據(jù)插入到指定位置
	public boolean insertPos(int val,int pos){
		//1、判斷pos的合法性
		if(pos < 0 || pos >= getLength()+1){
			return false;
		}
		Entry cur = head;
		for(int i = 0;i <= pos-1;i++){
			cur = cur.next;
		}
		//cur  pos的前一個(gè)
		Entry entry = new Entry(val);
		entry.next = cur.next;
		cur.next = entry;
		return true;
	}
	//
	
	//show()
	public void show(){
		/*Entry cur = head;
		while(cur.next != null){
			System.out.println("data:"+cur.next.data);
			cur = cur.next;
		}*/
		Entry cur = head.next;
		while(cur != null){
			System.out.println("data:"+cur.data);
			cur = cur.next;
		}
	}
	
}
public class LianBiao1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
				TestLink1 testlink = new TestLink1();
				
				testlink.insertTail(1330);
				testlink.insertTail(110);
				//1330 110 
				testlink.insertPos(10,0);
				//10 1330 110
				
				if(testlink.insertPos(32,10000)){
					System.out.println("插入成功");
				}else{
					System.out.println("插入失敗");
				}
				
				//10 32 1330 110
				
				testlink.show();
				System.out.println(testlink.getLength());
			}
		}

輸出結(jié)果:

補(bǔ)充:java中創(chuàng)建鏈表,實(shí)現(xiàn)鏈表的尾部插入

我就廢話不多說了,大家還是直接看代碼吧~

package test;
//目標(biāo):創(chuàng)建鏈表,實(shí)現(xiàn)鏈表結(jié)點(diǎn)的尾部插入
class Node_5{
  private String data;
  public Node_5 nextNode;
  public void setData(String indata){
    this.data=indata;
  }
  public String getData(){
    return this.data;
  }
  public void setNextNode(Node_5 newNode){
    this.nextNode=newNode;
  }
  public Node_5 getNextNode(){
    return this.nextNode;
  }
  public void addData(String indata){
    setData(indata);
    Node_5 node_5=new Node_5();
    Node_5 head=node_5;
    if(node_5.getData()==null){
      node_5.setData(indata);
      System.out.println(node_5.getData());
    }
    else{
      node_5.setNextNode(node_5);  
      node_5.setData(indata);
      System.out.println(node_5.getData());
    }    
  }   
}

public class T_5 {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Node_5 node_5=new Node_5();
    for(int i=1;i<=3;i++){
      node_5.addData("第"+i+"結(jié)點(diǎn)");
    }
  }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 通過Java壓縮JavaScript代碼實(shí)例分享

    通過Java壓縮JavaScript代碼實(shí)例分享

    這篇文章主要介紹了通過Java壓縮JavaScript代碼實(shí)例分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Java中子類調(diào)用父類構(gòu)造方法的問題分析

    Java中子類調(diào)用父類構(gòu)造方法的問題分析

    本篇文章介紹了,Java中子類調(diào)用父類構(gòu)造方法的問題分析。需要的朋友參考下
    2013-04-04
  • java中接口(interface)及使用方法示例

    java中接口(interface)及使用方法示例

    這篇文章主要介紹了java中接口(interface)及使用方法示例,涉及接口定義的簡(jiǎn)單介紹以及Java語言代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式

    Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式

    在Java中處理文件向來是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就給大家介紹Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式,需要的朋友可以參考下
    2024-10-10
  • 詳解idea+maven打jar包的兩種方式

    詳解idea+maven打jar包的兩種方式

    這篇文章主要介紹了idea+maven打jar包的兩種方式,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java JDK11基于嵌套的訪問控制的實(shí)現(xiàn)

    Java JDK11基于嵌套的訪問控制的實(shí)現(xiàn)

    這篇文章主要介紹了Java JDK11基于嵌套的訪問控制的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 基于Eclipce配置Spring Boot過程圖解

    基于Eclipce配置Spring Boot過程圖解

    這篇文章主要介紹了基于Eclipce配置Spring Boot過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java自動(dòng)添加重寫的toString方法詳解

    Java自動(dòng)添加重寫的toString方法詳解

    在本篇文章里小編給大家整理了關(guān)于Java自動(dòng)添加重寫的toString方法總結(jié),需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • SpringCloud 服務(wù)注冊(cè)IP錯(cuò)誤的解決

    SpringCloud 服務(wù)注冊(cè)IP錯(cuò)誤的解決

    這篇文章主要介紹了SpringCloud 服務(wù)注冊(cè)IP錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java 動(dòng)態(tài)生成類和實(shí)例, 并注入方法操作示例

    Java 動(dòng)態(tài)生成類和實(shí)例, 并注入方法操作示例

    這篇文章主要介紹了Java 動(dòng)態(tài)生成類和實(shí)例, 并注入方法操作,結(jié)合實(shí)例形式分析了Java 動(dòng)態(tài)生成類和實(shí)例以及動(dòng)態(tài)注入相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

丹江口市| 右玉县| 广灵县| 邯郸县| 宁南县| 寿光市| 定襄县| 渝中区| 阜宁县| 海晏县| 海门市| 隆德县| 扬中市| 淮滨县| 罗平县| 辽阳县| 武平县| 沙坪坝区| 方山县| 南昌县| 呈贡县| 中宁县| 林西县| 广水市| 大悟县| 南部县| 桂林市| 永仁县| 那曲县| 宣汉县| 海南省| 新密市| 梁山县| 张家港市| 鹰潭市| 通榆县| 洪洞县| 轮台县| 旺苍县| 蒙阴县| 无极县|