LinkList的乙個簡單實現

2021-07-03 03:06:07 字數 1719 閱讀 1608

鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用「next」指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶、迴圈鍊錶等等。基本原理一樣,只是增加了引用。下面就是最簡單的鏈式線性表的實現的源**,會有潛在的bug,不然人人都可以寫底層資料結構啦!但是不影響我們理解這種資料結構:

package mywork.c20150605;

import mywork.c20150605.linklist.node;

/* * a ****** demo for linklist

* hanchun 2015.6.5

*/public class linklistdemo

public node(t data, node next) }

node header;

node tail;

int size; //記錄纖線性表長度

public linklistdemo()

public linklistdemo(node element)

//返回線性表大小

public int getsize()

//判斷線性表是否為空

public boolean isempty()

return false; }

//返回索引處節點

public node getnodebyindex(int index)

node current = header;

for(int i = 0; i < size && current != null; current = current.next, i++)

} return null; }

public int locate(t element)

} return -1; }

/* * 之所以要強調頭尾節點處的情況,是因為:頭尾節點直接影響

* 後面對鏈式線性表的操作,如果是在中間插入,對頭尾引用是

* 沒有影響的。

*/public void addatheader(t element)

size++; }

//在表尾插入元素

public void add(t element)else

size++; }

//在指定位置插入節點

public void insert(t element, int index)

if(header == null)elseelse

} size++; }

/* * 刪除指定位置節點,該方法有待完善,比如刪除的線性表是空的,很明顯

* 這段**會丟擲nullpointexception

*/public void delete(int index)

if(index == 0)else

size--; }

public string tostring()

stringbuilder sb = new stringbuilder("[");

for(node current = header; current != null ; current = current.next)

int len = sb.length();

}}

乙個簡單的Matrix實現

我們直接來看 吧 matrix.h pragma once include using namespace std 矩陣類 class matrix 下面是實現和測試的 matrix.cpp include matrix.h include include matrix matrix void ma...

實現乙個簡單的 shared ptr

智慧型指標的作用有如同指標,但會記錄有多少個 shared ptrs 共同指向乙個物件。這便是所謂的引用計數。一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為 0,這個物件會被自動刪除。shared ptr 的實現機制其實就是在拷貝構造時使用同乙份引用計數。同乙個 shared ptr...

實現乙個簡單的LinkedList

今天把jdk1.8的linkedlist原始碼看了一下,發現使用的資料結構就是雙向鍊錶。自己也動手實現了乙個簡易版本的雙向鍊錶 package com.natsuki.lesson2 author date 2018 12 29 description 自己根據雙向鍊錶定義乙個簡易linkedlis...