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...