資料結構3 雙鏈表的簡單實現

2021-08-21 05:14:18 字數 2801 閱讀 4660

package com.zejian.structures.linkedlist.mylinked;

/*** 雙鏈表的工具類

*/public class dnode

/*** 建立乙個前指標、後指標為空的值

* @param data

*/public dnode(t data)

/*** 建立乙個空值

*/public dnode()

@override

public string tostring()

}

package com.zejian.structures.linkedlist.mylinked;

public class doublelinkedlistimplements ilinkedlist

@override

public boolean isempty()

/*** 長度

* @return

*/@override

public int length()

return length;

}@override

public t get(int index)

@override

public t set(int index, t data)

/*** 插入結點

* @param index

* @param data

* @return

*/@override

public boolean add(int index, t data)

// p= font.next;

// p=font.next.pre;

//如果是尾節點,更新尾節點

if (font==tail)

return false;

}/**

* 從尾部插入

* @param data

* @return

*/@override

public boolean add(t data)

return false;

}/**

* 根據索引刪除

* @param index

* @return

*/@override

public t remove(int index)

dnoderemovenode = this.head.next;

int j=0;

while (removenode.next!=null&&jp=this.head.next;

//頭刪除/尾刪除/中間刪除(size>1),查詢所有需要刪除的結點

while (p!=null)else

isremove=true;

p=p.next;//繼續查詢

}else

}return isremove;

}/**

* 清空鍊錶

*/@override

public void clear()

@override

public boolean contains(t data)

dnodep=this.head.next;

while (p!=null)else

}return false;

}@override

public string tostring()

return str+")";

}/**

* 傳入乙個陣列,轉換成鍊錶

* @param array

*/public doublelinkedlist(t array)}}

public static void main(string args);

// string letters=;

doublelinkedlistlist=new doublelinkedlist<>(letters);

system.out.println("list.get(3)->"+list.get(3));

system.out.println("list:"+list.tostring());

system.out.println("list.add(4,y)—>"+list.add(0,"y"));

system.out.println("list:"+list.tostring());

system.out.println("list.add(z)—>"+list.add("z"));

system.out.println("list:"+list.tostring());

system.out.println("list.contains(z)->"+list.contains("z"));

system.out.println("list.set(4,p)-->"+list.set(4,"p"));

system.out.println("list:"+list.tostring());

system.out.println("list.remove(6)-->"+list.remove(6));

// system.out.println("list.remove(z)->"+list.removeall("z"));

system.out.println("list:"+list.tostring());

}}

資料結構之 雙鏈表的實現

使用巢狀類實現 雙鏈表 學習要點 1 實現雙鏈表資料結構的定義以及各種操作 1 區別深拷貝 另外動態分配記憶體進行拷貝 和 淺拷貝 直接拷貝賦值 2 實現深拷貝構造和深拷貝賦值函式 3 實現操作運算子的過載 深拷貝賦值 輸出運算子過載 建立全域性函式,在類中定義時可宣告為friend函式 frien...

資料結構 雙鏈表

typedef struct nodenode 雙鏈表的根節點的bwd指標指向雙鏈表的最後乙個節點,fwd指標指向雙鏈表的第乙個節點,雙鏈表的value欄位為空 以下程式是將乙個值插入到乙個有序的雙鏈表中,如果鍊錶中已經有和該值相同的節點則不插入 include include typedef st...

資料結構 雙鏈表

目標 掌握雙鏈表的資料結構 來看看什麼是雙鏈表吧 雙鏈表與單鏈表的區別,單鏈表是單項的 而雙鏈表是有左右的 題目acwing 827 實現乙個雙鏈表,雙鏈表初始為空,支援5種操作 1 在最左側插入乙個數 2 在最右側插入乙個數 3 將第k個插入的數刪除 4 在第k個插入的數左側插入乙個數 5 在第k...