30/09/2018, 18:22

Ch trình tự cài đặt LinkedList nhưng thiếu sót nhiều..a e xem và chỉ ra lỗi giúp mình với

/**
 * Created by Admin on 10/7/2015.
 */
public class LinkedList {

    private int size=0;
    private Node head, tail;

    private static class Node {
        private String data;
        private Node next;
    }

    public LinkedList() {
        head = tail = null;
    }

    public boolean isEmpty() {
        return (head == null && tail == null);
    }

    public void addFirst(String item) {
        Node q = new Node();
        q.data = item;
        q.next = head;
        head = q;
        size++;
    }

    public void addLast(String item) {
        Node q = new Node();
        q.data = item;
        q.next = null;
        tail.next = q;
        size++;

    }

    public void removeFirst() {
        if (head == null)
            System.out.print("Error");
        else {
            Node i = head;
            head = head.next;
            size--;
        }
    }

    public static void main(String[] args) {
        LinkedList list=new LinkedList();
        list.addFirst("a");
        list.addFirst("n");
        list.addFirst("h");
        System.out.print(list);
        
    }
}
Kieu Xuan Dong viết 20:37 ngày 30/09/2018

Phương thức addFirst với addLast có vấn đề bạn thử xem code này nhé

public void addFirst(String item) {
    Node q = new Node();
    q.data = item;
    if(head == null && tail == null) {
       tail = q;
    }
    q.next= head;
    head = q;
}

public void addLast(String item) {
    Node q = new Node();
    q.data = item;
     if(head == null && tail == null) {
       head = q;
    }
    q.next = null;
    tail.next = q;
     tail = q;
    size++;
}

Mình nghĩ khi cài đặt danh sách liên kết thì chỉ cần con trỏ head thôi vì ban có thể dễ dàng duyệt tới tail thông qua head , không cần con trỏ tail làm gì cho rắc rối thêm !!!

Bài liên quan
0