JAVA資料結構之鍊錶 有dummyNode

2021-08-24 20:41:45 字數 1723 閱讀 8450

private

class node

public

node(e e)

public

node()

@override

public string tostring()

}

需要size記錄擁有的元素個數

public

class linkedlist

/*******增*******/

// 這因為,頭結點和中間結點有差異,所以需要分別討論。此處可以優化

public

void

add(int index, e e)

//當不為頭結點時,建立結點指標prev從頭結點開始遍歷到指定index位置

node prev = dummyhead;

for(int i = 0;i1;i++)

//在此處插入節點

prev.next = new node(e,prev.next);

//size++

size++;

}public

void

addfirst(e e)

public

void

addlast(e e)

/*********查*******/

//獲取鍊錶中的元素個數

public

intgetsize()

//返回鍊錶是否為空

public boolean isempty()

public e get(int index)

node cur = dummyhead.next;

for (int i = 0; i < index; i++)

return cur.e;

}//獲得鍊錶的第乙個元素

public e getfirst()

//獲得鍊錶的最後乙個元素

public e getlast()

/******改******/

public

void

set(int index,e e)

//從頭結點,開始遍歷

node cur = dummyhead.next;

for(int i = 0;i/*****************刪******************/

public e remove(int index)

//建立結點引用prev,遍歷到要刪除節點的頭乙個節點

node prev = dummyhead;

for(int i = 0;i//建立刪除結點引用delnode,prev.next

node delnode = prev.next

//prev的下乙個結點跳過刪除結點,指向下下個結點

prev.next = prev.next.next;

//將要刪除的結點的引用賦值為null

delnode = null;

size -- ;

//返回刪除結點的資料域

return delnode.e;

}public e removefirst()

public e removelast()

}

這樣操作就可以不用考慮第乙個結點,和中間結點的區別。

因為在第乙個結點之前加了乙個dummynode結點,所有需要操作的結點都是中間結點,

java資料結構之鍊錶

1,節點說明 package pku.ss.datastructure.linkedlist public class listnode listnode object theelement,listnode n object element 節點中的元素 listnode next 指向下乙個節點...

Java資料結構之鍊錶反轉

思路很簡單,定義乙個類,這個類分成2塊,一塊是表示自身的標誌,另外乙個儲存指向下乙個元素的引用。通過互換相鄰兩個節點的引用來達到鍊錶反轉的效果。上 package com.withiter.test public class reverselist public static node add st...

JAVA 資料結構之雙向鍊錶

啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。package linklist 結點定義 class doublynode public void display 寫乙個雙向...