欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 實現(xiàn)鏈表結點插入

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

PS:鏈表是一種數據結構,而數據結構就是一種存放數據的方式。

為什么需要鏈表?

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

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

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

鏈表示意圖

鏈表的建立

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

頭插法:從頭插入

public void insertHead(int val){
  //有這么一個結點 
  Entry cur = new Entry(val);
  cur.next = head.next;
  head.next = cur;
  }

頭插法示意圖:

尾插法:從尾插入

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

尾插法示意圖:

從任意結點插入

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的前一個
  Entry entry = new Entry(val);
  entry.next = cur.next;
  cur.next = entry;
  return true;
  }

示意圖:

完整代碼:

package LianBiao;
class TestLink1{	
	private Entry head;//指向頭結點的引用	
	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){
		//有這么一個結點 
		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);//得到的結點
		cur.next = entry;
	}
	//得到單鏈表的長度:
	public int getLength(){
		int len = 0;
		Entry cur = head.next;
		while(cur != null){
			len++;
			cur = cur.next;
		}
		return len;
	}
	//將數據插入到指定位置
	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的前一個
		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());
			}
		}

輸出結果:

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

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

package test;
//目標:創(chuàng)建鏈表,實現(xià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+"結點");
    }
  }
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Spring?Bean名稱不會被代理的命名技巧

    Spring?Bean名稱不會被代理的命名技巧

    Spring Bean一些使用小細節(jié)就是在不斷的源碼探索中逐步發(fā)現(xiàn)的,今天就來和小伙伴們聊一下通過 beanName 的設置,可以讓一個 bean 拒絕被代理
    2023-11-11
  • 關于spring中定時器的使用教程

    關于spring中定時器的使用教程

    大家應該都有所體會,在很多實際的web應用中,都有需要定時實現(xiàn)的服務,下面這篇文章主要給大家介紹了關于spring中定時器的使用教程,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • IDEA Debug模式下改變各類型變量值的方法

    IDEA Debug模式下改變各類型變量值的方法

    這篇文章主要介紹了IDEA Debug模式下改變各類型變量值的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • JAVA二叉樹的基本操作

    JAVA二叉樹的基本操作

    這篇文章主要介紹了JAVA二叉樹的基本操作DEMO,想要詳情了解的小伙伴請接著看下文吧
    2021-08-08
  • 使用純java config來配置spring mvc方式

    使用純java config來配置spring mvc方式

    這篇文章主要介紹了使用純java config來配置spring mvc方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot整合aws的示例代碼

    SpringBoot整合aws的示例代碼

    本文通過實例代碼給大家介紹SpringBoot整合aws的全過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-12-12
  • 使用jdk7的nio2操作文件拷貝和剪切示例

    使用jdk7的nio2操作文件拷貝和剪切示例

    使用jdk7的NIO2進行文件或文件夾的拷貝移動操作??梢宰詣觿?chuàng)建路徑,差異化更新文件,簡單的出錯重連機制
    2014-01-01
  • Intellij?IDEA如何修改配置文件位置

    Intellij?IDEA如何修改配置文件位置

    這篇文章主要介紹了Intellij?IDEA--修改配置文件位置,文章末尾給大家介紹了Intellij?IDEA--宏的用法記錄操作過程,對此文感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法

    FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法

    這篇文章主要介紹了FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java代碼塊與代碼加載順序原理詳解

    Java代碼塊與代碼加載順序原理詳解

    這篇文章主要介紹了Java代碼塊與代碼加載順序原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論