最近在看《演算法》,這是課後的一道關於雙向鍊錶習題的解決方案。
package com.xh.node;
/** * 實現雙向鍊錶
* @author kali
* */
public class twolink
public int size()
//在第乙個節點前加乙個
public void addfirst(item item)
else
}//刪除第乙個節點
public item delfirst()
//在最後節點前加乙個
public void addlast(item item)
else
} //刪除最後乙個節點
public item dellast()
//在指定節點前增加
public void add2before(item item,item newitem) }
//在指定節點後增加
public void add2last(item item,item newitem)
} //刪除指定節點
public void del2it(item item) }
//查詢所有元素
public string getall(doublenode f)
return all; }
//查詢指定元素節點
public doublenode getnode(item item,doublenode f)
else外面return;
return getnode(item,f.next);
}}else
} public static void main(string args)
//定義節點
private class doublenode
}
雙向鍊錶實現
template class link link link pre null,link ne null void operator new size t void operator delete void ptr template link link freelist null template v...
雙向鍊錶實現
雙向鍊錶的應用背景主要是單向鍊錶只能順序訪問,逆序訪問單向鍊錶 尤其是較大的單向鍊錶是一件極其費時費力的工作 相比於單向鍊錶,雙向鍊錶增加了乙個域,這個域裡面增加了乙個指向前驅節點的指標,使得整個鍊錶可以順序訪問或者逆序訪問,來去自如 定義的雙向鍊錶的標頭檔案,裡面包含了雙向鍊錶的宣告和資料型別的定...
實現雙向鍊錶
雙向鍊錶和單向鍊錶相比更加靈活,它的每乙個元素除了本身的值以為擁有兩個指標,分別指向上乙個和下乙個節點。維護成本上要高於單向鍊錶。鍊錶的大部分操作依賴於遍歷,這一方面雙向鍊錶會效率會好一些,可以根據查詢下標的位置從而選擇從煉表頭開始遍歷還是從鍊錶尾開始遍歷。返回元素個數 public intsize...