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

Java 反轉(zhuǎn)帶頭結(jié)點(diǎn)的單鏈表并顯示輸出的實(shí)現(xiàn)過程

 更新時間:2021年11月12日 10:46:17   作者:吉吉女王  
這篇文章主要介紹了Java 反轉(zhuǎn)帶頭結(jié)點(diǎn)的單鏈表并顯示輸出,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

  注意:要保證已經(jīng)有Node類和單鏈表的初始化,這樣才能調(diào)用反轉(zhuǎn)方法并顯示結(jié)果。

方法如下:

//Node<T>指泛型結(jié)點(diǎn)類
public void reverse2(Node<T> head){
	Node<T> p=head.next;
	Node<T> q=head.next.next;
	head.next=null;
	p.next=null;
	while(q!=null){
		Node<T> temp=q.next;
		q.next=p;
		p=q;
		q=temp;
	}
	q=this.head;
	q.next=p;
    /*
    //想要直接在方法中遍歷輸出可以使用這段代碼   ***p是反轉(zhuǎn)后的第一個結(jié)點(diǎn)***
	for(Node<T> qq=p;qq!=null;qq=qq.next){//qq不能為q,因為結(jié)束循環(huán)后,p是最后一個結(jié)點(diǎn),q是null
		System.out.print(qq.data+"\t");
	}
	*/
 
}

實(shí)現(xiàn)過程如圖所示:

在循環(huán)之前,先把head以及初始p的next斷掉,方便后面的循環(huán);循環(huán)中的q.next=p就是重定向,這一步把原來的next指向p;

不用q=q.next來使q向后移動,因為q結(jié)點(diǎn)的指針重指向后,q的next為空了,無法正確指向下一個結(jié)點(diǎn)。這時用temp結(jié)點(diǎn)來做一下過渡,在q指針重指向之前,把q的下一個結(jié)點(diǎn)賦給temp,即temp=q.next,在重指向后,用q=temp來向后移動;

p=q;q=temp就是往后移動一個結(jié)點(diǎn),可以繼續(xù)重復(fù)循環(huán)。

循環(huán)結(jié)束時,q為空,p為最后一個結(jié)點(diǎn),使q作為頭結(jié)點(diǎn)并指向p就完成了反轉(zhuǎn)。

整體代碼:

Node類:

public class Node<T>{
	public T data;
	public Node<T>next;
	
	public Node(T data,Node<T>next){
		this.data=data;
		this.next=next;
	}
	
	public Node(){
		this(null,null);
	}
	
	public String toString(){
		return this.data.toString();
	}
}

 單鏈表類:

public class SinglyList<T> {
public Node<T> head;
public SinglyList(){
	this.head=new Node<T>();
}
	public SinglyList(T[] values){
		this();
		Node<T> rear=this.head;
		for(int i=0;i<values.length;i++)
		{
			rear.next=new Node<T>(values[i],null);
			rear=rear.next;
		}
	}
 
//輸出方法
public String toString(){
		String str=this.getClass().getName()+"(";
		for(Node<T>p=this.head.next;p!=null;p=p.next)
		{
			str+=p.data.toString();
			if(p.next!=null)
				str+=",";
		}
		return str+=")";
	}
 
//反轉(zhuǎn)方法
public void reverse2(Node<T> head){
	Node<T> p=head.next;
	Node<T> q=head.next.next;
	head.next=null;
	p.next=null;
	while(q!=null){
		Node<T> temp=q.next;
		q.next=p;
		p=q;
		q=temp;
	}
	q=this.head;
	q.next=p;
    /*
    //想要直接在方法中遍歷輸出可以使用這段代碼   ***p是反轉(zhuǎn)后的第一個結(jié)點(diǎn)***
	for(Node<T> qq=p;qq!=null;qq=qq.next){//qq不能為q,因為結(jié)束循環(huán)后,p是最后一個結(jié)點(diǎn),q是null
		System.out.print(qq.data+"\t");
	}
	*/
}
 
public static void main(String[] args) {
		Integer[] a={1,2,4,5,7};
SinglyList<Integer> sl=new SinglyList<>(a);
System.out.println(sl.toString());
sl.reverse2(sl.head);
System.out.println(sl.toString());
}
}

 輸出結(jié)果:

到此這篇關(guān)于Java 反轉(zhuǎn)帶頭結(jié)點(diǎn)的單鏈表并顯示輸出的實(shí)現(xiàn)過程的文章就介紹到這了,更多相關(guān)Java帶頭結(jié)點(diǎn)的單鏈表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javaWeb使用servlet搭建服務(wù)器入門

    javaWeb使用servlet搭建服務(wù)器入門

    這篇文章主要為大家詳細(xì)介紹了javaWeb使用servlet搭建服務(wù)器入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java8 使用工廠方法supplyAsync創(chuàng)建CompletableFuture實(shí)例

    Java8 使用工廠方法supplyAsync創(chuàng)建CompletableFuture實(shí)例

    這篇文章主要介紹了Java8 使用工廠方法supplyAsync創(chuàng)建CompletableFuture實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Mybatis的sql語句執(zhí)行異常后打印到日志問題

    Mybatis的sql語句執(zhí)行異常后打印到日志問題

    文章介紹了一種Mybatis異常日志打印方案,主要通過Mybatis攔截器獲取執(zhí)行的sql語句,并利用ThreadLocal存儲,以避免多線程下的sql語句覆蓋問題,當(dāng)異常發(fā)生時,從ThreadLocal中取出sql語句并打印到單獨(dú)的日志文件中,方便數(shù)據(jù)恢復(fù),該方案經(jīng)過壓力測試
    2024-10-10
  • mybatis?使用concat?模糊查詢方式

    mybatis?使用concat?模糊查詢方式

    這篇文章主要介紹了mybatis?使用concat?模糊查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中Hashtable類與HashMap類的區(qū)別詳解

    Java中Hashtable類與HashMap類的區(qū)別詳解

    Hashtable的應(yīng)用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable。可能你覺得Hashtable很好用,為什么不用呢?這里簡單分析他們的區(qū)別。
    2016-01-01
  • Java線程池復(fù)用線程的秘密你知道嗎

    Java線程池復(fù)用線程的秘密你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java線程池復(fù)用線程的秘密,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望您能夠多多關(guān)注

    2022-03-03
  • Springboot內(nèi)外部logback多環(huán)境配置詳解

    Springboot內(nèi)外部logback多環(huán)境配置詳解

    本文主要介紹了Springboot內(nèi)外部logback多環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • MyBatis在注解上使用動態(tài)SQL方式(@select使用if)

    MyBatis在注解上使用動態(tài)SQL方式(@select使用if)

    這篇文章主要介紹了MyBatis在注解上使用動態(tài)SQL方式(@select使用if),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringMVC使用RESTful接口案例

    SpringMVC使用RESTful接口案例

    RESTful是一種web軟件風(fēng)格,它不是標(biāo)準(zhǔn)也不是協(xié)議,它不一定要采用,只是一種風(fēng)格,它倡導(dǎo)的是一個資源定位(url)及資源操作的風(fēng)格,這篇文章主要介紹了SpringBoot使用RESTful接口
    2022-12-12
  • Springboot POI導(dǎo)出Excel(瀏覽器)

    Springboot POI導(dǎo)出Excel(瀏覽器)

    這篇文章主要為大家詳細(xì)介紹了Springboot POI導(dǎo)出Excel,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論

连山| 新河县| 福贡县| 牙克石市| 遂宁市| 绥阳县| 澄迈县| 思茅市| 稻城县| 章丘市| 青铜峡市| 巴楚县| 瓮安县| 句容市| 华坪县| 清原| 甘泉县| 新营市| 胶州市| 益阳市| 商丘市| 峨眉山市| 新民市| 绥芬河市| 雷州市| 天津市| 阿拉善右旗| 临猗县| 汾阳市| 迁西县| 弥渡县| 元谋县| 南江县| 奉节县| 晋州市| 新晃| 甘肃省| 梁平县| 汶上县| 库尔勒市| 东宁县|