Как создать метод для вставки после в SLL

#java

Вопрос:

У меня есть 3 класса для этой проблемы, во-первых, класс узлов

 public class Node {
    private int element;
    private Node next;

    // constructor
    public Node(int data) {
        element = data;
        next = null;
    }

    // link a new node to this node
    public void setlink(Node newNode) {
        next = newNode;
    }

    // return next node
    public Node getNextNode() { 
        return next;
    }

    // return element of this node
    public int getElement() {
        return element;
    }
}
 

во-вторых,класс SLL

 public class SLL {
    private static final int Node = 0;
    private Node head = null;
    private Node tail = null;
    private int size = 0; // SLL's size

    public void addLast(int data) {
        // create new node
        Node x = new Node(data);
        if (size == 0) {
            head = x;
            tail=x;
        } else {
            tail.setlink(x);
            tail = x;
        }
    
        size  ;
    }

    public void findElement(int element) {  
        boolean find_element = false;
        Node p=head;
        for (int i=1; i<=size ; i   ) {
            if (p.getElement() == element) {
                find_element = true;
                break;
            }
            p=p.getNextNode();
        }
        if (find_element != true) {
            System.out.println("not found");
        }
    }

    public void countElement (int element) { 
        int countNumber = 0;
        Node p = head;
        for (int i = 1;p!=null; p=p.getNextNode()){
            if (p.getElement()==element) {
                  countNumber  ;
                  break;
            }
 
        }
        System.out.print("Position of " element " is " countNumber);
    }
    
    public void insertAfter(int gevenElement, int newElement) {
        boolean find_element = false;
        Node p=head;
        for (int i=1; i<=size; i  ) {
            if (p.getElement() == gevenElement) {
                find_element = true;
                break;
            }
            p=p.getNextNode();
        }
        if (find_element != true) {
            System.out.println("not found");
        }

        if (find_element = true) {
            int countNumber = 0;
            Node q = head;
            for (int i = 1;q!=null; q=q.getNextNode()) {
                if(q.getElement()==gevenElement) {
                    countNumber  ;
                    break;
                }
            }
            System.out.print("Position of " gevenElement " is " countNumber);  

            Node prevNode=new Node(gevenElement);
            if (find_element = true) {                  
                Node newNode=new Node(newElement);
                newNode.setNext(prevNode.getNext());
                prevNode.setNext(newNode);
                size  ;         
            }
        }
    }
}
 

и для последнего-это основной класс, который не может измениться

 import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        SLL sll = new SLL();
        int given,newe;
        System.out.println("Enter the element value for adding new element afer it ..");
        given = sc.nextInt();
        System.out.println("Enter new element value..");
        newe= sc.nextInt();
        sll.insertAfter(given,newe );
    }
}
 

У меня возникла проблема с классом SLL, я хочу создать метод ( public void insertAfter(int gevenElement, int newElement) ), который будет содержать новый элемент (newElement), который будет вставлен после элемента gevenElement.

Комментарии:

1. Привет @701n7 — вы имеете в виду, что вам нужен этот метод или что-то еще (после этого уже есть вставка [хотя и неправильная])? В качестве альтернативы находка приведет вас на полпути туда. как только найденный p находится в нужной точке, чтобы установить его рядом с новым узлом, а следующий для нового узла указывает на то, что в нем было у p.next.