Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class LinkedList {
- public Node head;
- public Node tail;
- public LinkedList() {
- head = null;
- tail = null;
- }
- public int[] toArray() {
- int count = this.count();
- int[] arr = new int[count];
- Node node = this.head;
- for (int i = 0; i < arr.length; i++) {
- arr[i] = node.value;
- node = node.next;
- }
- return arr;
- }
- public void addInTail(Node item) {
- if (this.head == null)
- this.head = item;
- else
- this.tail.next = item;
- this.tail = item;
- }
- public Node find(int value) {
- Node node = this.head;
- while (node != null) {
- if (node.value == value)
- return node;
- node = node.next;
- }
- return null;
- }
- public ArrayList<Node> findAll(int _value) {
- ArrayList<Node> nodes = new ArrayList<>();
- Node node = this.head;
- while (node != null) {
- if (node.value == _value) {
- nodes.add(node);
- }
- node = node.next;
- }
- return nodes;
- }
- public boolean remove(int _value) {
- if (this.head == null) {
- return false;
- }
- Node node = this.head;
- Node prevNode = null;
- boolean isNodeFound = false;
- while (node != null) {
- if (node.value == _value) {
- isNodeFound = true;
- break;
- }
- prevNode = node;
- node = node.next;
- }
- if (isNodeFound) {
- if (node == tail) {
- tail = prevNode;
- }
- if (node == head) {
- head = node.next;
- }
- if (prevNode != null) {
- prevNode.next = node.next;
- }
- node = null;
- }
- return isNodeFound;
- }
- public void removeAll(int _value) {
- if (this.head == null) {
- return;
- }
- Node node = this.head;
- Node prevNode = null;
- while (node != null) {
- if (node.value == _value) {
- if (node == this.head) {
- this.head = node.next;
- }
- if (node == this.tail) {
- this.tail = prevNode;
- }
- if (prevNode != null) {
- prevNode.next = node.next;
- node = prevNode;
- }
- }
- prevNode = node;
- node = node.next;
- }
- }
- public void clear() {
- this.head = null;
- this.tail = null;
- }
- public int count() {
- Node node = this.head;
- int cnt = 0;
- if (node != null) {
- while (node != null) {
- cnt++;
- node = node.next;
- }
- }
- return cnt;
- }
- public void insertAfter(Node _nodeAfter, Node _nodeToInsert) {
- if (this.head == null || _nodeAfter == this.tail) {
- addInTail(_nodeToInsert);
- } else if (_nodeAfter == null) {
- _nodeToInsert.next = this.head;
- this.head = _nodeToInsert;
- } else {
- _nodeToInsert.next = _nodeAfter.next;
- _nodeAfter.next = _nodeToInsert;
- }
- }
- }
- class Node {
- public int value;
- public Node next;
- public Node(int _value) {
- value = _value;
- next = null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement