Linked List
Simply Linked List
-
Code khởi tạo element trong Linked List
Code:
public class Node { int value; Node next; public Node(){ } public Node(int value, Node next){ this.value = value; this.next = next; } public Node(int value){ this.value = value; this.next = null; } }|| || || || \ / \/ +-------------------+--------------+ | | | | Value | Next | | | | +-------------------+--------------+Một phần tử trong list bao gồm 2 phần là value và next:
- Value: Dùng để lưu trữ thông tin của phần tử trong list
- Next: Dùng để trỏ đến phần tử tiếp theo trong list
-
Khởi tạo list, thêm, chèn, sửa, xóa phần tử trong list:
-
Khởi tạo:
Code:
public class MyList { Node head,tail; int size; public MyList(){ head = tail = null; size = 0; } }Trong đó:
head: phần tử đầu tiên của listtail: phần tử cuối cùng của listsize: kích cỡ của list, vì kích cỡ không cố định nên sẽ tạo 1 biếnsizeđể kiểm soát kích cỡ
-
Kiểm tra list trống hay không:
Code:
boolean isEmpty(){ return head == null; }Giải thích:
- So sánh với phần tử
head(phần tử đầu tiên), nếu phần tử này không có - tức là null - thì sẽ trả về true, tương đương với list rỗng. Vì phần tử đầu tiên không có nên đồng nghĩa phần tửtail(phần tử cuối cùng) cũng không tồn tại.
- So sánh với phần tử
-
Thêm:
-
Thêm vào cuối list:
Code:
void add(int value){ Node newItem = new Node(value); if(isEmpty()){ head = tail = newItem; } else { tail.next = newItem; tail = newItem; } size++; } -
Thêm vào đầu list:
Code:
void addFirst(int value){ Node newItem = new Node(value); if(isEmpty()){ head = tail = newItem; } else { newItem.next = head; head = newItem; } size++; } -
Thêm vào vị trí bất kì trong list:
Code:
void add(int value, int index){ if(index <= 0){ addFirst(value); return; } else if(index > size){ addLast(value); return; } else { int count = 0; Node currentItem = head; // Tìm phần tử có vị trí trước vị trí muốn chèn while(currentItem.next != null && count != index -1){ count++; currentItem = currentItem.next; } // Nếu list trống và vị trí muốn chèn lớn hơn 2 thì sẽ không làm gì cả if(currentItem == null){ return; } else { // Thêm phần tử vào vị trí muốn chèn Node newItem = new Node(value); newItem.next = currentItem.next; currentItem.next = newItem; size++; } } }
-
-