Java 資料結構與演算法面試 鍊錶

2021-09-12 17:27:12 字數 2405 閱讀 1562

package test;

class node

public node(object ele,node node)

// 設定運算元據域的介面方法

public object getele()

public void setele(object ele)

// 設定操作指標域的介面方法

public node getnext()

public void setnext(node node)

}class ab

// 比較兩個元素是否相等(內容比較)

// 必須重寫 節點 資料物件的 equals

public static boolean comparecontent(node a,node b)

}/**

* 說明:

* 本鍊錶的建構函式預設為有頭空鍊錶,

* 需要新增元素請使用 add /insert / preadd;

* 由於節點之間比較的複雜性,本鍊錶節點之間的比較特別定義使用了 ab

* 這個類的 compare方法,應對更多的情況。

* @author tomsan

* */

public class listslinked

// 判空

public boolean isempty()

// 返回鍊錶的大小

public int getsize()

// 獲取某個元素e節點的前驅節點(引用有效)

public node getpre(node e)

return null; }

// 獲取 i 號 節點的元素的前驅節點

public node getpre(int i)

return temp; }

// 獲取 i 號元素所在的節點

public node getelebyid(int i)

// 內容判斷鍊錶是否含有元素 e

public boolean contain(node e)

} return false; }

// 判斷 e 在鍊錶中的 id

public int getidbyele(node e)

return -1; }

// 在 i 號位置插入 元素

public boolean insertele(int i,node e)

node templast = temp.getnext();

temp.setnext(e);

e.setnext(templast);

this.size++;

return true;

}return false; }

// 刪除 i 號 元素

public boolean delete(int i)

temp.setnext(temp.getnext().getnext());

return true;

}return false; }

// 尾部新增元素

node temp = head;

// 鍊錶不為空

while(temp.getnext()!=null)

temp.setnext(node);

// 如果只含煉表頭

if (head.getnext()== null)

this.size++;

}// 列印鍊錶內容

public void printlindedlist()

}}

package test;

public class test

// 顯示列表結果

system.out.println("構造20個元素的鍊錶");

ls.printlindedlist();

// 在序號 2 處插入元素 node("第三")

ls.insertele(2, new node("第三 ",null));

// 顯示列表結果

system.out.println("\n插入第三");

ls.printlindedlist();

// 刪除 第 i 號元素

ls.delete(2);

// 顯示列表結果

system.out.println("\n刪除第三");

ls.printlindedlist();

// 是否包含某元素

boolean flag = ls.contain(new node("ok2",null));

// 顯示列表結果

system.out.println("是否包含"+ flag);

}}

直通BAT演算法面試 鍊錶

題一 鍊錶分化 題幹 對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於等於它的結點在前,大於等於它的在後,保證結點值不重複。測試樣例...

Java資料結構與演算法

1.1 概念資料結構主要是研究程式設計問題中計算機的操作物件以及它們之間的關係和操作的學科。1.2 分類儲存結構 存在於計算機世界的物理層面 邏輯結構 一種是資料結構的邏輯層面 1.3 按照資料元素分類線性 存在於計算機世界的物理層面 非線性 一種是資料結構的邏輯層面 1.4 集合結構只考慮資料元素...

Java資料結構與演算法 四 鍊錶

鍊錶是一種物理儲存單元 上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標 鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標 域。相比於線性表 順序結構,操作複...