学习日记[13]

更新 發佈閱讀 8 分鐘

今天主要做了三件记忆深刻的事。

第一件事是双向表的创建,我设想的是两种方式。假设一个节点有两个指针,前面的称为before,后面的称为next。第一种方式就是before和next相互连接,这样我做了两个程序,都是因为过于混乱,两个相互赋值的语句让所有节点都一致,和头节点一样。所以似乎只有第二种方式才能建立,就是before之间相互连接,next之间相互连结。这样,before就是和next相反的操作——反向遍历。这种方式和前面一样,有向前连接和向后链接两种方式,下面就是代码。

package Linked_Double_Behind_Notfor_Nohead;

// next data before,这里的head和before是按照遍历顺序定的,从左到右为正,所以左边的next为头;相反,before是反向遍历,所以在后面;
class Node
{
Node next;
int data;
Node forward;
public Node(int data)
{
this.next = null;
this.forward = null;
this.data = data;
}
}
public class linked_Double_Notfor
{
private Node head;
private Node sec_head;
public linked_Double_Notfor()
{
this.head = null;
this.sec_head = null;
}
public void addList(int data)
{
Node newNode = new Node(data);
if(head == null)
{
head = newNode;
sec_head = newNode;
}
else
{
Node temp = head;
while(temp.next != null)
{
temp = temp.next;
}
temp.next = newNode;
newNode.forward = sec_head;
sec_head = newNode;
}
}
public void calculateSum()
{
int sum = 0;
Node current = head;
System.out.print("每一个值是:\n");
int i = 0;
while (current != null)
{
sum += current.data;
i++;
System.out.printf("%3d%c", current.data, i % 10 == 0 ? '\n' : 32);
current = current.next;
}
System.out.println("\n总和是:" + sum); // 打印总和
}
public static void main(String[] args)
{
linked_Double_Notfor text = new linked_Double_Notfor();
for(int i = 1 ; i <= 100 ; i++)
{
text.addList(i);
}
text.calculateSum();
}

}

这个是向后插入方法

package Linked_Double_Forward_Not_Nohead;



//创建节点类
class Node
{
//定义所需要的属性
Node before;
int data;
Node next;
//初始化节点
public Node(int data)
{
this.before = null;
this.data = data;
this.next = null;
}
}
//创建链表类
public class LinkedList
{
//属性创建
Node head;
Node tail;
//链表类的初始化
public LinkedList()
{
this.head = null;
this.tail = null;
}
//添加节点
public void add_Node(int data)
{
//创建新节点
Node newNode = new Node(data);
//验证链表是否存在,同时链接节点
if(head == null)
{
//如果不存在,我们就将新节点作为第一个节点
head = newNode;
tail = newNode;
}
else
{
//如果存在,就需要找到相应的位置进行链接
Node temp = head;
newNode.next = temp;
head = newNode;
temp.before = newNode;
}
}
//测试程序
public void calculateSum()
{
int sum = 0;
Node current = tail;
System.out.print("每一个值是:\n");
int i = 0;
while (current != null)
{
sum += current.data;
i++;
System.out.printf("%3d%c", current.data, i % 10 == 0 ? '\n' : 32);
current = current.before;
}
System.out.println("\n总和是:" + sum); // 打印总和
}
public static void main(String[] args)
{
LinkedList text = new LinkedList();
for(int i = 1 ; i <= 100 ; i++)
{
text.add_Node(i);
}
text.calculateSum();
}
}

这个是向前插入方式。

这两者之间其实差别挺大的。总体来说,这两种插入方式不适合单独来讲,每种方式里面都有另外一种方式的影子。最好还是用画图的方式理解,这是我的感悟,在做一件事情之前,必须把思路理清楚确保他是相对合理的,然后再按照这个思路去做。我就是太急忙了,这两个东西搞了近两小时,实在不应该。图一点更要清楚,图一定要清楚,图一定要清楚。

第二件事就是读了一篇随笔,蒙田的《论我们的行为变化多端》。这篇随笔里,蒙田所认为的人应该是行为的集合体,而不是个体的多重方面。这样看也不是不无道理,因为构成我们的是行为,所以即使做错了事也不会神化它,错了就必须改正,这样我们不会片面地看待一个人。蒙田说人的变化多端是人性中最普遍也是最劣质的特性,我们不能仅仅依据生活和外表简单的评判一个人。人的种种行为是在多方面的影响下由个人做出的应激性判断,这里可以是金钱、名利、理想等等。要评价一个人必须要探究其行动背后的能量来源,由一个人的本质延伸到评价。我是很赞同的,我个人的经历也是告诉我这样,行动是多变的,只有我们自己的内心是唯一的,我们内心的能量供给行为才是始终不变的,比如一些动物本能——饥饿,困倦或者是各种情绪。尽管在类似情境中,这些都会变化,但他们却总是存在而不是说有一天会消失,当然,这里考虑的是生前的事情。变得始终如一,所有的行动都是由内心世界自助供能而不是外界供能,像性恶论一样,通过内心的建设,净化令人厌恶的一切,最终死的时候是洁白一身。

第三件事就是体育课的突发奇想。昨天说过,大部分学科之间都是有联系的,这之中,体育是身体,是几乎所有行动的本源。所以上心还是有必要的。

各位,晚安。




留言
avatar-img
YLAMBDA的沙龍
0會員
20內容數
这个专题是我个人的学习日记,每日会更新,内容很乱,请多见谅。
YLAMBDA的沙龍的其他內容
2023/11/10
2023/11/10
2023/11/04
2023/11/04
2023/11/01
2023/11/01
看更多
你可能也想看
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
在資料結構與演算法裡, 最簡單的線性資料結構除了list之外就是linked list鏈結串列了。 Linked list又有分為單向Singly linked list 和雙向Doubly linked list 在這篇文章,會從最基礎的Singly linked list開始講起。 定義
Thumbnail
在資料結構與演算法裡, 最簡單的線性資料結構除了list之外就是linked list鏈結串列了。 Linked list又有分為單向Singly linked list 和雙向Doubly linked list 在這篇文章,會從最基礎的Singly linked list開始講起。 定義
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 直線排列Permutations 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所有可能的情況,遞迴展開所有分
Thumbnail
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 直線排列Permutations 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所有可能的情況,遞迴展開所有分
Thumbnail
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
Thumbnail
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
Thumbnail
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
Thumbnail
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
Thumbnail
題目敘述 題目會給定一個鏈結串列 Linked List的頭部結點,要求我們根據索引的奇偶數重新排列。奇數索引的在前,偶數索引的在後。數的時候,從Head節點的索引=1開始數。 例如: 1 -> 2 -> 3 -> 4 -> 5 重新排列為 1 -> 3 -> 5 -> 2 -> 4
Thumbnail
題目敘述 題目會給定一個鏈結串列 Linked List的頭部結點,要求我們根據索引的奇偶數重新排列。奇數索引的在前,偶數索引的在後。數的時候,從Head節點的索引=1開始數。 例如: 1 -> 2 -> 3 -> 4 -> 5 重新排列為 1 -> 3 -> 5 -> 2 -> 4
Thumbnail
題目敘述 題目會給我們一個鏈結串列的頭部結點Head node,要求我們計算鏈結串列中的Twin sum最大值是多少? 註: Twin Sum的定義就是頭尾結點相對位置相同的,互相配對加總在一起的值。 例如 給定串列= 1 -> 3 -> 2 -> 5 -> 100 -> 8 1, 8 一組
Thumbnail
題目敘述 題目會給我們一個鏈結串列的頭部結點Head node,要求我們計算鏈結串列中的Twin sum最大值是多少? 註: Twin Sum的定義就是頭尾結點相對位置相同的,互相配對加總在一起的值。 例如 給定串列= 1 -> 3 -> 2 -> 5 -> 100 -> 8 1, 8 一組
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News