• Java-单链表的实现


    /**
     * establish a single linked list
     * 创建一个单链表
     * @author fred
     *
     */
    public class SingleLinkedList<E> {
        private Node<E> head;
        private E data;
        private int size;
    
        //constructor
        public SingleLinkedList() {
            head = new Node();
        }
        
        //get the size of the list
        //得到该链表的大小
        public int getSize() {
            return size;
        }
        
        //insert data into the end of the list 
        //向链表顺序添加data
        public void add(E data) {
            Node<E> node = new Node(data, null);
            Node<E> temp = head;
            while(temp.next != null) {
                temp = temp.next;
            }
            temp.next = node;
            size++;
        }
        
        //insert data into the list at the special position
        //在链表中指定的位置index添加data
        public void insertByIndex(E data, int index) {
            if(index < 1 || index > size) {
                System.out.println("脚标越界");
                return;
            }
            Node<E> node = new Node(data, null);
            Node<E> temp = head;
            
            int count = 1;
            while(temp.next != null) {
                if(count++ == index) {
                    node.next = temp.next;
                    temp.next = node;
                    size++;
                    return;
                }
                else {
                    temp = temp.next;
                }
            }
            
        }
        
        //delete the data at a sepcial position
        //删除链表中指定位置的数据
        public void deleteByIndex(int index) {
            Node<E> temp = head;
            int count = 1;
            while(temp.next != null) {
                if(count++ == index) {
                    temp.next = temp.next.next;
                    return;
                }
                else {
                    temp = temp.next;
                }
            }
        }
        
        //clear the list
        //清空链表
        public void clear() {
            size = 0;
            head.next = null;
        }
        
        @Override
        public String toString() {
            String result = "data: ";
            Node<E> temp = head;
            while(temp.next != null) {
                temp = temp.next;
                result += temp.data + ", ";
            }
            return result;
        }
    
        //establish a inner Node class
        //叶子类
        private class Node<E>{
            private E data;
            private Node<E> next;
            
            public Node(){
                this.data = null;
                this.next = null;
            }
            
            public Node(E data, Node<E> next) {
                this.data = data;
                this.next = next;
            }
        }
        
    }
  • 相关阅读:
    面试题6 重建二叉树
    面试题5 从尾到头打印链表
    面试题4 替换空格
    面试题3 二维数组中查找
    面试题2 单例
    C++ 强制类型转换
    C++ 11 新特性
    STL 函数对象
    STL 算法
    OpenSSH多路复用Multiplexing配置
  • 原文地址:https://www.cnblogs.com/fredkeke/p/9042915.html
Copyright © 2020-2023  润新知