Java實現雙向鍊錶的基本操作

2021-07-15 14:17:07 字數 2629 閱讀 2287

雙向鍊錶即表中任一結點都是由data資料域,上乙個結點引用域lastnode,下乙個結點引用域nextnode組成。

/**

*雙向鍊錶結點類

* @author liangxiamoyi

* @param */

public class dlnode

/*** 構造方法

* @param item 資料域

* @param last 上乙個結點

* @param next 下乙個結點

*/public dlnode(t item,dlnodelast,dlnodenext)

}

/**

* 雙向鍊錶類

* @author liangxiamoyi

* * @param */

public class dllist

/*** 構建有乙個結點的單鏈表

* @param item 資料域

*/public dllist(t item)

/*** 判斷是否為空

* @return

*/public boolean isempty()

/*** 得到單鏈表的長度

* @return

*/public int getsize()

/*** 訪問,得到第k個結點的資料域

* @param k 第k個結點

* @return 返回第k個結點的資料

*/public t find(int k)

currnode=head.nextnode;

for(int i=2;i<=k;i++)

return currnode.data;

} /**

* 查詢,得到第乙個資料為item的結點的位置

* @param item 資料

* @return 位置

*/public int search(t item)

} return -1;

} /**

* 刪除當前結點,並將其資料返回

* @return

*/public t delete()

dlnodetemp=currnode;

currnode.nextnode.lastnode=currnode.lastnode;

currnode.lastnode.nextnode=currnode.nextnode;

size--;

if(currnode==tail)

currnode=currnode.lastnode;

return temp.data;

} /**

* 刪除哨位結點後的第乙個真正表結點,並將資料返回

* @return

*/public t deletefromhead()

dlnodetemp=head.nextnode;

head.nextnode=head.nextnode.nextnode;

size--;

if(temp==tail)

else

return temp.data;

} /**

* 刪除表尾結點,並將資料返回

* @return

*/public t deletefromtail()

dlnodep=tail;

tail=tail.lastnode;

tail.nextnode=null;

size--;

return p.data;

} /**

* 刪除當前結點的下乙個結點

* @return

*/public t deletenext()

dlnodep=currnode.nextnode;

if(p==tail)

else

size--;

return p.data;

}/**

* 在當前結點後插入乙個資料為item的結點

* @param item 資料

*/public void insert(t item)

dlnodep=new dlnode(item,currnode,currnode.nextnode);

currnode.nextnode.lastnode=p;

currnode.nextnode=p;

size++;

if(tail==currnode)

} /**

* 從表尾插入乙個資料為item的結點

* @param item

*/public void insertfromtail(t item)

/*** 在哨位結點後插入乙個資料為item的結點

* @param item

*/public void insertfromhead(t item)

else

} /**

* 列印所有結點的資料

*/public void shownodes()

} //測試

public static void main(string args)

}

雙向鍊錶 基本操作

test.c define crt secure no warnings 1 include doubleslishtnode.h void test1 initdslist pushback printfdslist popback void test2 pushfront popfront vo...

雙向鍊錶基本操作

帶頭節點的雙向鍊錶操作 include include include define ok 1 define error 0 define overflow 0 using namespace std typedef int status typedef int elemtype typedef s...

雙向鍊錶基本操作

package com.bei.linkedlist auther honeysky date 2020 11 10 13 38 public class doublelinkedlistdemo 建立乙個雙向鍊錶的類 class doublelinkedlist 遍歷雙向鍊錶的方法 public ...