今天把jdk1.8的linkedlist原始碼看了一下,發現使用的資料結構就是雙向鍊錶。自己也動手實現了乙個簡易版本的雙向鍊錶
package com.natsuki.lesson2;
/** * @author:
* @date: 2018-12-29
* @description: 自己根據雙向鍊錶定義乙個簡易linkedlist
*/public class mylinkedlist
/*** 鍊錶新增元素
** @param index 插入元素的位置
* @param element 插入元素
*/public void add(int index, e element) else }}
/*** 在指定節點之前插入新節點
** @param element
* @param node
*/public void linkbefore(e element, nodenode) else
size++;
}/**
* 獲取指定位置的節點
** @param index 位置
* @return 指定位置的節點
*/public nodegetnode(int index)
return p;
} else
return p;}}
/*** 插入乙個新元素到底部
** @param element
*/public void add(e element) else
size++;
}/**
* @param index 操作元素的位置
* @return true表示操作位置沒有問題
*/private boolean checkpositionindex(int index)
@override
public string tostring()
return sb.tostring();
}private class node
}}
**的注釋已經很詳細了,這裡要注意過載了add的方法,預設沒有引數是向鍊錶尾部插入新的節點。 乙個簡單的Matrix實現
我們直接來看 吧 matrix.h pragma once include using namespace std 矩陣類 class matrix 下面是實現和測試的 matrix.cpp include matrix.h include include matrix matrix void ma...
LinkList的乙個簡單實現
鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...
實現乙個簡單的 shared ptr
智慧型指標的作用有如同指標,但會記錄有多少個 shared ptrs 共同指向乙個物件。這便是所謂的引用計數。一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為 0,這個物件會被自動刪除。shared ptr 的實現機制其實就是在拷貝構造時使用同乙份引用計數。同乙個 shared ptr...