java实现单链表(一)
2015-11-25 17:26
211 查看
package com.test; import javax.swing.text.AbstractDocument.LeafElement; public class LinkList1<DT> { /** * * @author aolei * * @param <DT> * * 节点类 */ public static class Node<DT>{ DT data;//数据 Node<DT> pNext;//指针 /* * 构造函数 */ Node(DT element,Node<DT> pNext){ this.data = element; this.pNext = pNext; } Node(DT element){ this(element, null); } Node(){} } private Node<DT> first; private static int length;//记录链表的长度 public LinkList1() { // TODO Auto-generated constructor stub first = new Node(); first.pNext = null; } /** * 判断链表是否为空 * @return */ public boolean isEmpty(){ return first.pNext == null; } /** * 添加元素到链表的节点中 * @param data */ public void addElement(DT data){ Node<DT> node = new Node<DT>(data); node.pNext = first.pNext; first.pNext = node; length++; } /** * 打印链表 */ public void printLinklist(){ if ( isEmpty()){ System.out.println("Linklist is NULL"); } Node<DT> node = first.pNext; for (;node != null;node = node.pNext){ System.out.println(node.data); } } /** * 插入节点 * @param data 要插入的数据 * @param local 要插入的位置 * @return 是否插入成功 */ public boolean insertNode(DT data, int local){ int currentLocal = 0; if (isEmpty()){ System.out.println("插入失败"); System.out.println("Linklist is NULL"); return false; }else{ Node<DT> pNode = first.pNext; Node<DT> newNode = new Node<DT>(data); while(pNode.pNext != null && currentLocal < local){ pNode = pNode.pNext; currentLocal++; } newNode.pNext = pNode.pNext; pNode.pNext = newNode; return true; } } /** * 删除节点 * @param local 要删除节点的位置 * @return true 删除成功 false 删除失败 */ public boolean deleteNode(int local){ int currentlocal = 0; if (isEmpty()){ System.out.println("删除失败"); System.out.println("Linklist is NULL"); return false; }else{ Node<DT> pNode = first; while(pNode.pNext != null && currentlocal < local){ pNode = pNode.pNext; currentlocal++; } pNode.pNext = pNode.pNext.pNext; return true; } } public static void main(String[] args) { LinkList1<String> stringLinkList = new LinkList1<String>(); /*stringLinkList.addElement("A"); stringLinkList.addElement("B"); stringLinkList.addElement("C");*/ stringLinkList.printLinklist(); /*if(stringLinkList.insertNode("D", 3)){ System.out.println("插入成功"); stringLinkList.printLinklist(); }*/ /*if (stringLinkList.deleteNode(0)){ System.out.println("删除成功"); stringLinkList.printLinklist(); }*/ } }
相关文章推荐
- Java多线程用法解析
- 递归方式实现斐波那契数列&汉诺塔(java)
- eclipse经常未响应解决办法
- 1.1.9 java用二进制表示十进制整数(不用Integer.toBinaryString(N)方法)
- jfinal集成spring cxf做webservice服务
- Java_开源框架_JPinyin汉字转拼音的Java开源库
- (java)Remove Duplicates from Sorted Array
- 深入理解java异常处理机制
- (java)Binary Tree Level Order Traversal II
- clojure实现java类
- java导出Excel表格
- java动态代理
- 沫沫金-eclipse关联(引用)其他工程(项目)并编译可用
- java静态绑定和动态绑定
- 使用 Spring 3 来创建 RESTful Web Services
- JProfiler 解决 Java 服务器的性能跟踪
- (java)Remove Element
- Java中的HashMap和HashTable的不同点
- Android Eclipse集成NDK
- 使用eclipse逆向工程开发hibernate项目