首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

JAVA单向链表的兑现

2012-10-29 
JAVA单向链表的实现package com.leo_faith.wwwpublic class Node {Object dataNode nextNode(Object d)

JAVA单向链表的实现

    package com.leo_faith.www;public class Node {Object data;Node next;Node(Object d) {data = d;next = null;}}

    ?

      package?com.leo_faith.www; ????public?class?LinkList?{ ????????/*?用变量来实现表头?*/??????private?Node?Head?=?null; ????????private?Node?Tail?=?null; ????????private?Node?Pointer?=?null;?//point?to?previous ????????private?int?Length?=?0; ????????public?void?deleteAll()?{//?清空整个链表 ??????????Head?=?null; ??????????Tail?=?null; ??????????Pointer?=?null; ??????????Length?=?0; ??????} ????????//?链表复位,使第一个节点成为当前节点 ??????public?void?reset()?{ ??????????Pointer?=?null; ??????} ????????//?判断链表是否为空 ??????public?boolean?isEmpty()?{ ??????????return?(Length?==?0); ??????} ????????//?判断当前结点是否为最后一个结点 ??????public?boolean?isEnd()?{ ??????????if?(Length?==?0) ??????????????throw?new?java.lang.NullPointerException(); ??????????else?if?(Length?==?1) ??????????????return?true; ??????????else??????????????return?(cursor()?==?Tail); ??????} ????????//?返回当前结点的下一个结点的值,并使其成为当前结点 ??????public?Object?nextNode()?{ ??????????if?(Length?==?1) ??????????????throw?new?java.util.NoSuchElementException(); ??????????else?if?(Length?==?0) ??????????????throw?new?java.lang.NullPointerException(); ??????????else?{ ??????????????Node?temp?=?cursor(); ??????????????Pointer?=?temp; ??????????????if?(temp?!=?Tail) ??????????????????return?(temp.next.data); ??????????????else??????????????????throw?new?java.util.NoSuchElementException(); ??????????} ??????} ????????//?返回当前结点的值 ??????public?Object?currentNode()?{ ??????????Node?temp?=?cursor(); ??????????return?temp.data; ??????} ????????//?在当前结点前插入一个结点,并使其成为当前结点 ??????public?void?insert(Object?obj)?{ ??????????Node?e?=?new?Node(obj); ??????????if?(Length?==?0)?{ ??????????????Tail?=?e; ??????????????Head?=?e; ??????????}?else?{ ??????????????Node?temp?=?cursor(); ??????????????e.next?=?temp; ??????????????if?(Pointer?==?null) ??????????????????Head?=?e; ??????????????else??????????????????Pointer.next?=?e; ??????????} ??????????Length++; ??????} ????????//?返回链表的大小 ??????public?int?size()?{ ??????????return?Length; ??????} ????????//?将当前结点移出链表,下一个结点成为当前结点, ??????//?如果移出的结点是最后一个结点, ??????//?则第一个结点成为当前结点 ??????public?Object?remove()?{ ??????????Object?temp; ??????????if?(Length?==?0) ??????????????throw?new?java.util.NoSuchElementException(); ??????????else?if?(Length?==?1)?{ ??????????????temp?=?Head.data; ??????????????deleteAll(); ??????????}?else?{ ??????????????Node?cur?=?cursor(); ??????????????temp?=?cur.data; ??????????????if?(cur?==?Head) ??????????????????Head?=?cur.next; ??????????????else?if?(cur?==?Tail)?{ ??????????????????Pointer.next?=?null; ??????????????????reset(); ??????????????}?else??????????????????Pointer.next?=?cur.next; ??????????????Length--; ??????????} ??????????return?temp; ??????} ????????//?返回当前结点的指针 ??????private?Node?cursor()?{ ??????????if?(Head?==?null) ??????????????throw?new?java.lang.NullPointerException(); ??????????else?if?(Pointer?==?null) ??????????????return?Head; ??????????else??????????????return?Pointer.next; ??????} ????????//?链表的简单应用举例 ??????public?static?void?main(String[]?args)?{ ??????????LinkList?a?=?new?LinkList(); ??????????for?(int?i?=?1;?i?<=?10;?i++) ??????????????a.insert(new?Integer(i)); ??????????System.out.println("The?currentNode?is:"?+?a.currentNode()); ??????????while?(!a.isEnd()) ??????????????System.out.println("The?nextNode?is:"?+?a.nextNode()); ??????????a.reset(); ??????????while?(!a.isEnd())?{ ??????????????a.remove(); ??????????} ??????????a.remove(); ??????????a.reset(); ??????????if?(a.isEmpty())?{ ??????????????System.out.println("There?is?no?Node?in?List"); ??????????} ??????} ??}?

热点排行