⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkedlisttest.java

📁 java 北大青鸟 java 北大青鸟
💻 JAVA
字号:
/**  (c) 2005 Aptech Limited.
 *   版权所有
 */

/**
 * 创建一个类,存储数据和地址.
 * @version 1.0, 2005 年 5 月 20 日
 * @author zl
 */

class Node {

/**声明 Object 类的对象. */
  Object dataObj;

/** 声明 Node 类的对象. */
  Node nextNode;

/**
 * 使用数据初始化对象.
 * @param data 用于初始化数据
 */
  public Node(final Object data) {
    dataObj = data;
  }
}

/**
 * 实现链表.
 * 数据结构的概念并重写方法的类
 * @version 1.0, 2005 年 5 月 20 日
 * @author zl
 */

class LinkedList {

/** 声明 Node 类的对象. */
    private Node firstNode;

/** 声明 Node 类的对象. */
    private Node lastNode;

/**
 * 构造方法. 
 */
    LinkedList() {
    }

/**
 * 创建一个 Node 对象.
 * @param dataObj 用于初始化数据
 * @return Node 对象
 */

    private Node createNode(final Object dataObj) {
        Node nextNode = new Node(dataObj);
        return nextNode;
    }

/**
 * 重写 LinkedList 类的 isEmpty() 方法.
 * 检查节点是否包含任何元素
 * @return boolean 值
 */

    boolean isEmpty() {
       return firstNode == null;
    }

/**
 * 重写 LinkedList 类的 addFirst() 方法.
 * @param data 添加到链表的前面
 */
    void addtoFront(Object data) {

          Node nNode = createNode(data);

         /* 将节点附加到链表的前面*/
         if (isEmpty()) {
            firstNode = nNode;
            lastNode = nNode;
         } else {
            nNode.nextNode = firstNode;
            firstNode = nNode;
         }
     }

/**
 * 重写 LinkedList 类的 addLast() 方法.
 * @param data 添加到链表的末尾
 */
    void addtoBack(final Object data) {
          Node nNode = createNode(data);

          /* 将节点附加到链表的末尾*/
         if (isEmpty()) {
            firstNode = nNode;
            lastNode = nNode;
         } else {
            lastNode.nextNode = nNode;
            lastNode = nNode;
         }
      }

/**
 * 重写 LinkedList 类的 removeFirst() 方法.
 * @return Object 链表中的对象
 * @throws Exception
 * @throws Exception 对象
 */
    Object fetchFromFront() throws Exception {
       if (isEmpty()) {
           throw new Exception("Empty list in Fetch From Front");
       } else {
           Node tempNode = firstNode; //declare a localnode

                if (firstNode == lastNode) {
                   firstNode = null;
                   lastNode = null;
                } else {
                   firstNode = firstNode.nextNode;
                }
             return tempNode.dataObj;
         }
      }

/**
 * 重写 LinkedList 类的 removeLast 方法.
 * @return Object 链表中的对象
 * @throws Exception
 * @throws Exception 对象
 */
      Object fetchFromBack() throws Exception {
            if (this.isEmpty()) {
                   throw new Exception("Empty list in Fetch From Back");
             } else {
                    Node tempNode = lastNode;

                    if (firstNode == lastNode) {
                        firstNode = null;
                        lastNode = null;
                    } else {
                        Node currentNode = firstNode;

                        while (currentNode.nextNode != lastNode) {
                             currentNode = currentNode.nextNode;
                        }

                        lastNode = currentNode;
                        currentNode.nextNode = null;
                   }
            return tempNode.dataObj;
           }
        }

/**
 * 显示 LinkedList 类的内容. 
 */   
  void display() {
        System.out.println("\n**********************************");
        System.out.println("显示链表的值");
        System.out.println("**********************************");
        if (isEmpty()) {
           System.out.println("空");
           return;
        }

        Node current = firstNode;
        while (current != null) {
            System.out.println("值: " + current.dataObj);
            current = current.nextNode;
        }
      }
 }

/**
 * 实际测试数据结构和
 * 方法的类
 * @version 1.0, 2005 年 5 月 20 日
 * @author zl
 */
class MethodTest {

/** 声明变量.*/
    LinkedList listObj;

/**
 * 构造方法初始化变量. 
 */
    MethodTest() {
        listObj = new LinkedList();
    }

/**
 * 要调用的方法. 
 */
    void test() {

        System.out.println("测试未排序的链表");
        System.out.println();
        System.out.println("添加值");
        listObj.addtoFront(new String("二"));
        listObj.addtoBack(new String("三"));
        listObj.addtoFront(new String("一"));
        listObj.addtoBack(new String("四"));
        listObj.display();
        System.out.println("******************");
        System.out.println("从链表中删除");
        System.out.println("******************");
        try {
             System.out.println("已删除 " + listObj.fetchFromFront());
             System.out.println("已删除 " + listObj.fetchFromBack());
        } catch (Exception e) {
             System.out.println("异常:" + e);
        }
    }
}

/**
 * 包含 main 方法的类.
 * @version 1.0, 2005 年 5 月 20 日
 * @author zl
 */

class LinkedListTest {

/**
 * 构造方法. 
 */
    protected LinkedListTest() {
    }

/**
 *  这是 main 方法,任何应用程序的入口点.
 *  @param args 传递至 main 方法
 */
     public static void main( String[] args) {
         MethodTest obj = new MethodTest();
         obj.test();
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -