演算法--連結串列操作
1.從尾到頭列印單鏈表
利用棧先遍歷一遍連結串列,然後依次從棧頂彈出即可。
public static void printList(ListNode head){
Stack<Integer> s = new Stack<>();
ListNode node = head;
while(node!=null){
s.push(node.val);
node = node.next;
}
while(!s.isEmpty()){
System.out.println(s.pop());
}
}
利用遞迴方式 當head非空以及head,next非空說明head為最後一個元素,則輸出,否則遞迴呼叫
public static void printListRec(ListNode head){
if(head != null){
if(head.next == null){
System.out.println(head.val);
}else{
printListRec(head.next);
}
}
}
相關推薦
演算法--連結串列操作
1.從尾到頭列印單鏈表 利用棧先遍歷一遍連結串列,然後依次從棧頂彈出即可。 public static void printList(ListNode head){ Stack<Integer> s = new Stack<>(); Lis
劍指offer--關於連結串列操作的演算法
題1:輸入一個連結串列,輸出該連結串列中倒數第k個結點。 思路1: 因為我們拿到的是第一個結點,不知道最後一個結點在哪。但是我們可以發現,從第一個結點走到倒數第K個結點的長度和正著第k個結點到最後一個結點的長度一樣。所以我們可以用兩個指標指向第一個結點,讓第一個指證先走k-1步,然後兩個指證
【演算法】C++連結串列的實現以及常見的連結串列操作和測試
自己實現連結串列常見的操作,用作記錄,以備以後檢視#include <iostream> #include <string.h> using namespace std; //定義節點 class Node { public: int m_data
演算法 -- 連結串列插入排序
問題: 這個程式碼產生0 ~ 999之間的N個隨機數,構建每個節點代表一個數的連結串列,然後重新排列這些節點,使之按照順序出現。 分析: 1、b連結串列為空時, x = b; x->next = N
資料結構之連結串列操作(c++實現)
1、單向連結串列(頭結點不含資料,不佔長度),C++實現: #include <iostream> #include <stack> using namespace std; /*****定義節點****/ typedef struct node{ int va
LeeCode——中級演算法——連結串列——奇偶連結串列(JavaScript)
給定一個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。 請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 O(1),時間複雜度應為 O(nodes),nodes 為節點總數。 示例 1: 輸入:
java版資料結構與演算法—連結串列實現佇列
package com.zoujc.QueueLink; /** * 連結串列實現佇列 */ class FirstLastList { private Link first; private Link last; public FirstLastList(){
java版資料結構與演算法—連結串列實現棧
package com.zoujc; /** * 用連結串列實現棧 */ class MyLinkStack { private Link first; public MyLinkStack(){ first = null; } //判空
c++ 雙向連結串列操作總結
第一、包含DoubleLinkNode 模板類和DoubleLinkList 模板類 #pragma once #include<iostream> using namespace std; template <typename T> class
JS資料結構和演算法 --- 連結串列
概念:性質類似於陣列,是計算機的一種儲存結構。連結串列由一系列結點組成,每個結點裡包含了本結點的資料域和指向下一個結點的指標(裡面儲存著下一個結點)。 作用:按一定順序儲存資料,允許在任意位置插入和刪除結點。 分類:雙向連結串列、迴圈連結串列 應用場景:對線性表的長度或者規模難
LeetCode 連結串列操作相關(一)
連結串列操作對於我來說是一個相對薄弱的環節,需要好好練習。 一、刪除連結串列中的節點 刪除指定節點這種題目是連結串列的基本操作,本題題目如下: 請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 -- he
約瑟夫環問題(動態連結串列操作)n個學生圍成一圈,每m個出隊,輸出所有出隊的序列
需求:掌握連結串列的簡單操作(增刪查改)詳解在備註中指出 #include <iostream> #include <stdlib.h> #include <stdio.h> /* run this program using the
資料結構與演算法——連結串列
連結串列 定義 連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另
c語言課上作業——初學連結串列操作
http://www.cnblogs.com/maluning/p/7966875.html 根據上面的大佬的指導。今天完成了老師的作業。第一次完成了連結串列的建立、遍歷、插入、刪除(基本靠抄,不好意思)。 作為一個菜鳥,第一次完成100行以上的不用複製重複程式碼的程式碼。好興奮呀。 //不過還是有一點
經典案例-連結串列操作的幾大經典例子 單鏈表反轉 環的檢測 求中間節點 有序連結串列合併等
這篇博文 主要總結連結串列在應用時的幾個重要案例。學習之前,最好能夠掌握連結串列相關的一些基礎知識,以及連結串列中資料的插入、刪除操作如何實現等等,這些網上資料很多,這裡沒有做過多介紹,不熟悉的同學可以看程式碼之前簡單瞭解一下。 1.單鏈表反轉 連結串列中環的檢測
常見連結串列操作-刪除連結串列倒數第n個節點(JAVA實現)
問題 給出一個單向連結串列,刪除該連結串列倒數第n個節點,並返回頭節點。 例如: 給出連結串列 1->2->3->4->5,n=2 返回連結串列 1->2->3->5 解題思路 最容易想到的演算法: 先遍歷一次連結串列,
常見連結串列操作-求連結串列的中間節點(JAVA實現)
問題 給出任意單向連結串列,找出並返回該連結串列的中間節點。 奇數長度的連結串列,例如:1->2->3->4->5 返回節點 3 偶長度的連結串列,例如:1->2->3->4->5->6 返回節點 4 解題思
兩種連結串列操作--連結串列反轉、連結串列排序(pyhon實現)
連結串列反轉和連結串列排序是兩種連結串列的基本操作,在python裡list型別的reverse()方法就是對list的反轉,sort()方法可以對list的元素進行排序,本文將探討這兩種連結串列操作基於單鏈表的實現方式。 連結串列反轉 對於單鏈表而言,連結串列反轉可
常用5個連結串列操作程式碼
* 1) 單鏈表反轉 * 2) 連結串列中環的檢測 * 3) 兩個有序的連結串列合併 * 4) 刪除連結串列倒數第n個結點 * 5) 求連結串列的中間結點 package algo.lesson8.LinkedList; /** * 1) 單鏈表反轉 *
[演算法]連結串列+HashMap實現LRU演算法
/** * @author :dongshuo * @date : 2018/12/10 14:27 * @desc : 連結串列+hashmap實現的 */ public class LRUCache1<K,V> { private final int MA