亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

數據結構(五)雙鏈表

2019-11-10 20:36:19
字體:
來源:轉載
供稿:網友

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。

java模擬雙鏈表結構.實現增刪改查等方法.

/** * 雙鏈表 */public class MyDoubleLink<T> implements Iterable<T>{ /** *節點的封裝類 */ PRivate class Node{ Node prev;//上一個節點 T data;//數據 Node next;//下一個節點 } private Node head;//頭節點 private Node rear;//尾節點 /** * 添加數據 * @param data */ public void add(T data){ //1.創建新的節點 Node node = new Node(); //2.把數據放入節點中 node.data = data; //3.把節點鏈接到鏈表中 //從鏈表的尾部添加數據 if (rear == null) { //說明鏈表是空,當前節點就成為頭節點 rear = node; head = node; }else { //有頭節點 rear.next = node; node.prev = rear; rear = node; } } /** * 重寫toString方法 */ public String toString(){ StringBuffer sb = new StringBuffer("["); //遍歷鏈表中的所有數據 Node node = head;//從頭節點開始遍歷數據 while (node != null) { //有數據 //拼接數據 //判斷是否是尾節點 if (node != rear) { sb.append(node.data+", "); }else { sb.append(node.data); } //條件的改變 node = node.next; } sb.append("]"); return sb.toString(); } /** * 刪除數據 * 1.只有一個數據 * 2.刪除頭節點 * 3.刪除數據 * 4.刪除尾節點 * @param data */ public void remove(T data){ //1.查找數據是否存在,查找數據所在的節點 Node node = findData(data); //2.判斷node是否存在 if (node != null) { //存在 remove(node); } } /** * 刪除節點 * @param node */ public void remove(Node node){ if (node == head && node == rear) { //1.只有一個數據 head = null; rear = null; }else if (node == head) { //2.刪除頭節點,后面肯定有節點 head = head.next; head.prev = null; }else if (node == rear) { //3.刪除尾節點,前面肯定有節點 rear = rear.prev; rear.next = null; }else { //4.刪除數據,前后肯定有節點 node.prev.next = node.next; node.next.prev = node.prev; } } /** * 查找數據所在節點 * @param data * @return */ private Node findData(T data) { Node node = head; while (node != null) { if (node.data.equals(data) && node.data.hashCode() == data.hashCode()) { //找到數據 break; }else { //繼續下一個 node = node.next; } } return node; } /** * 修改數據 * @param oldData * @param newData */ public void updata(T oldData,T newData){ Node node = findData(oldData); if (node != null) { node.data = newData; } } /** * 修改數據(在對象的hash值相同的情況下修改對象屬性值) * @param data */ public void updata(T data){ Node node = findData(data); if (node != null) { node.data = data; } } /** * 是否包含數據 * @param data * @return */ public boolean contains(T data){ return findData(data) != null; } /** * 重寫迭代器方法,可以用增強for */ @Override public Iterator iterator() { class MyIte implements Iterator{ private Node node = head;//從頭節點遍歷 @Override public boolean hasNext() { return node != null; } @Override public Object next() { Object data = node.data;//獲取數據 node = node.next;//設置下一個數據 return data; } @Override public void remove() { //刪除next方法返回的數據 MyDoubleLink.this.remove(node.prev); } } return new MyIte(); } /** * 從頭部添加數據 * @param data */ public void addFirst(T data){ //1.創建新的節點 Node node = new Node(); //2.把數據放入節點中 node.data = data; //3.把節點鏈接到鏈表中 //從鏈表的尾部添加數據 if (rear == null) { //說明鏈表是空,當前節點就成為頭節點 rear = node; head = node; }else { //有頭節點 head.prev = node; node.next = head; head = node; } } /** * 排序添加數據,添加數據時自動排序 * @param data */ public void addSort(T data){ addSortBlock(data,null); } /** * 查找比data大的第一個節點 * @param data * @return */ private Node findNext(T data){ //從頭節點開始找 Node node = head; while (node != null) { //比較 if (compare(node.data, data)>0) { break; }else { //繼續找下一個 node = node.next; } } return node; } /** * 查找比data大的第一個節點(使用比較器) * @param data * @param comp 比較器 * @return */ private Node findNext(T data,Comparator<T> comp){ //從頭節點開始找 Node node = head; while (node != null) { //比較 if (comp.compare(node.data, data)>0) { break; }else { //繼續找下一個 node = node.next; } } return node; } /** * 比較兩個數據的大小 * @param obj1 * @param obj2 * @return * 0 相等 * 大于0 obj1 > obj2 * 小于0 obj1 < obj2 */ public int compare(T obj1,T obj2){ Comparable c1; Comparable c2; if (obj1 instanceof Comparable) { //數據實現比較器 c1 = (Comparable)obj1; c2 = (Comparable)obj2; }else { //沒有實現比較器 c1 = obj1.toString(); c2 = obj2.toString(); } return c1.compareTo(c2); } /** * 添加數據并進行排序(使用比較器) * @param data * @param comparable 比較器 */ public void addSort(T data,Comparator<T> comparable){ addSortBlock(data,comparable); } /** * 添加數據并進行排序(私有方法) * @param data 傳入數據 * @param comp 比較器 */ private void addSortBlock(T data,Comparator<T> comp){ //1.創建新的節點 Node node = new Node(); //2.把數據放入節點中 node.data = data; Node next = null; //2.找位置(從小到大)添加數據 if (comp != null) { next= findNext(data,comp); }else { next = findNext(data); } if (next != null) { //找到下一個節點,把data放到next節點前 if (next == head) { addFirst(data); }else { next.prev.next = node; node.next = next; node.prev = next.prev; next.prev = node; } }else { //沒找到下一個節點,data最大 add(data); } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91tv亚洲精品香蕉国产一区7ujn| 精品自拍视频在线观看| 91久久久在线| 日韩精品中文字幕在线播放| 日韩av综合网| 日韩美女视频中文字幕| 国产精品久久久久久久久久久新郎| 国产精品亚洲网站| 欧美性xxxx极品hd满灌| 97国产真实伦对白精彩视频8| 久久精品电影网| 国内精久久久久久久久久人| 精品偷拍一区二区三区在线看| 久久久免费精品| 成人美女av在线直播| 91免费国产视频| 亚洲视频一区二区| 日本欧美黄网站| 亚洲福利在线视频| 欧美日韩国产第一页| 精品久久久久久久久中文字幕| 91亚洲精品久久久| 久久精品久久久久| 亚洲免费视频网站| 亚洲一区二区精品| 成人欧美一区二区三区在线湿哒哒| 国产深夜精品福利| 国产精品网站视频| 国产精品久久久久久亚洲影视| 九九综合九九综合| 91人成网站www| 欧美日韩在线一区| 国产精品久久久久久久久粉嫩av| 91av在线视频观看| 国产精品v片在线观看不卡| 久久久亚洲国产天美传媒修理工| 日韩精品久久久久久福利| 亚洲2020天天堂在线观看| 久久人人看视频| 91情侣偷在线精品国产| 国产欧美日韩亚洲精品| 97色在线视频观看| 日韩精品免费综合视频在线播放| 欧美极品欧美精品欧美视频| 九九精品视频在线| 亚洲影视中文字幕| 色婷婷综合久久久久中文字幕1| 欧美日韩激情视频| 中文字幕日韩av综合精品| 亚洲欧洲国产精品| 日韩在线观看精品| 精品美女国产在线| 九九久久久久99精品| 久久精品国产v日韩v亚洲| 亚洲男人的天堂在线| 欧美中文字幕视频| 亚洲第一视频在线观看| 日韩av不卡在线| 久久99亚洲精品| 一区二区三区高清国产| 精品国产欧美成人夜夜嗨| 色999日韩欧美国产| 秋霞成人午夜鲁丝一区二区三区| 国产91露脸中文字幕在线| 国产视频丨精品|在线观看| 国产精品高潮视频| 欧美日韩中文在线观看| 日韩欧美国产一区二区| 91av在线网站| 91高清视频免费| 国产一区二区三区视频免费| 欧美日本啪啪无遮挡网站| 亚洲色图激情小说| 精品在线欧美视频| 国语自产精品视频在线看抢先版图片| 国产精品视频成人| 91在线观看免费| 国产成人高潮免费观看精品| 欧美制服第一页| 日韩在线观看免费| 欧美大尺度电影在线观看| 欧美成人免费全部观看天天性色| 欧美日韩亚洲精品一区二区三区| 欧美激情综合亚洲一二区| 欧美另类暴力丝袜| 精品久久久久久久久国产字幕| 亚洲九九九在线观看| 亚洲激情免费观看| 国产欧美一区二区| 国产精品网址在线| 亚洲人成电影网站色xx| 亚洲电影av在线| 国产成人久久久| 欧美成人免费全部| 91沈先生作品| 伦伦影院午夜日韩欧美限制| 最近免费中文字幕视频2019| 91夜夜未满十八勿入爽爽影院| 成人美女av在线直播| 亚洲国产日韩欧美在线99| 久久精品国产91精品亚洲| 亚洲国产毛片完整版| www.亚洲人.com| 亚洲free性xxxx护士白浆| 国产精品久久久久av| 欧美日韩一区二区免费视频| 亚洲最大的免费| 青青在线视频一区二区三区| 亚洲精品影视在线观看| 国产日韩精品电影| 久久久久久久久久久91| 亚洲国产精品嫩草影院久久| 日韩一区视频在线| 日日狠狠久久偷偷四色综合免费| 国产精品网站大全| 精品免费在线观看| 国产精品∨欧美精品v日韩精品| 97香蕉超级碰碰久久免费软件| 欧美激情伊人电影| 欧美激情在线视频二区| 欧美成人精品三级在线观看| 国产精品成人一区二区三区吃奶| 2019亚洲日韩新视频| 国产v综合ⅴ日韩v欧美大片| 国产成人97精品免费看片| 久久综合电影一区| 国产精品免费一区二区三区都可以| 国产不卡精品视男人的天堂| 成人免费网站在线| 午夜精品99久久免费| 欧美激情高清视频| 日本aⅴ大伊香蕉精品视频| 欧美在线视频一二三| 日韩中文字幕视频在线| 欧美激情亚洲一区| 日韩av网址在线| 亚洲成人精品在线| 久久精品久久久久久| 国产精品视频不卡| 亚洲精品自拍第一页| 91视频免费在线| 久久久成人的性感天堂| 久久精品国产一区二区电影| 欧美主播福利视频| 国产日韩在线播放| 国产福利精品av综合导导航| 国模私拍一区二区三区| 亚洲人成伊人成综合网久久久| 亚洲国产欧美一区二区丝袜黑人| 成人免费视频97| 亚洲欧洲日产国码av系列天堂| 97视频com| 欧美在线视频网| 欧美激情一区二区三区高清视频| 亚洲国产欧美一区二区三区同亚洲| 日韩激情视频在线播放| 亚洲第一区中文99精品| 国产精品免费电影| 亚洲成人999| 欧美黄网免费在线观看| 亚洲天堂av在线免费观看| 国产91在线播放九色快色| 亚洲大胆人体视频| 久久全国免费视频|