Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class List<T> {
- private Node<T> first;
- private int size = 0;
- public List() {
- }
- public void add(T content) {
- Node<T> node = new Node();
- node.setContent(content);
- node.setIndex(size);
- if (this.isEmpty()) {
- first = node;
- size++;
- }
- else {
- Node<T> help = first;
- while (help.getNext() != null) {
- help = help.getNext();
- }
- help.setNext(node);
- size++;
- }
- }
- public void add(int index, T content) {
- if (index >= 0 && index < size) {
- Node<T> node = new Node();
- node.setContent(content);
- Node<T> next = this.getNode(index);
- node.setNext(next);
- node.setIndex(index);
- if (index == 0) {
- first = node;
- }
- if (index > 0) {
- Node<T> predecessor = this.getNode(index - 1);
- predecessor.setNext(node);
- }
- if (next != null) {
- Node<T> toChange = next;;
- while (toChange != null) {
- toChange.setIndex(toChange.getIndex() + 1);
- toChange = toChange.getNext();
- }
- }
- size++;
- }
- }
- public void remove(int index) {
- if (!this.isEmpty()) {
- if (index >= 0 && index < size) {
- Node<T> next = this.getNode(index + 1);;
- if (index == 0) {
- first = first.getNext();
- }
- if (index > 0) {
- Node<T> predecessor = this.getNode(index - 1);
- predecessor.setNext(next);
- }
- if (next != null) {
- Node<T> toChange = next;;
- while (toChange != null) {
- toChange.setIndex(toChange.getIndex() - 1);
- toChange = toChange.getNext();
- }
- }
- size--;
- }
- }
- }
- public void remove(T content) {
- if (!this.isEmpty()) {
- Node<T> next = first.getNext();
- if (first.getContent() == content) {
- first = next;
- size--;
- }
- else {
- Node<T> predecessor = first;
- while (predecessor != null) {
- Node<T> node = predecessor.getNext();
- if (node != null && node.getContent() == content) {
- next = node.getNext();
- predecessor.setNext(next);
- size--;
- break;
- }
- predecessor = node;
- }
- }
- if (next != null) {
- Node<T> toChange = next;
- while (toChange != null) {
- toChange.setIndex(toChange.getIndex() - 1);
- toChange = toChange.getNext();
- }
- }
- }
- }
- private Node<T> getNode(int index) {
- if (!this.isEmpty() && index >= 0 && index < size) {
- Node<T> help = first;
- while (help.getIndex() != index) {
- help = help.getNext();
- }
- return help;
- }
- return null;
- }
- public T get(int index) {
- if (!this.isEmpty() && index >= 0 && index < size) {
- Node<T> help = first;
- while (help.getIndex() != index) {
- help = help.getNext();
- }
- return help.getContent();
- }
- return null;
- }
- public boolean isEmpty() {
- return first == null;
- }
- public int size() {
- return size;
- }
- public class Node<T>
- {
- private T content;
- private int index;
- private Node<T> next;
- public Node() {
- }
- public T getContent() {
- return content;
- }
- public void setContent(T content) {
- this.content = content;
- }
- public Node<T> getNext() {
- return next;
- }
- public void setNext(Node<T> next) {
- this.next = next;
- }
- public int getIndex() {
- return index;
- }
- public void setIndex(int index) {
- this.index = index;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement