Swap elements in LinkedList

前端 未结 7 1781
别那么骄傲
别那么骄傲 2020-12-20 14:32

I want to maintain order of the elements being added in a list. So, I used a LinkedList in Java.

Now I want to be able to swap two elements in the linke

7条回答
  •  甜味超标
    2020-12-20 15:28

    public class SwapNode {
    
    public static Node head;
    
    public static void main(String[] args) {
        SwapNode obj = new SwapNode();
        obj.insertAtEnd(5);
        obj.insertAtEnd(6);
        obj.insertAtEnd(4);
        obj.insertAtEnd(7);
        obj.insertAtEnd(3);
        obj.insertAtEnd(8);
        obj.insertAtEnd(2);
        obj.insertAtEnd(9);
        obj.insertAtEnd(1);
        obj.print(head);
        System.out.println("*** Swapped ***");
        obj.swapElementValue(4, 2);     
    }
    
    public void swapElementValue(int value1, int value2) {
        if (value1 == value2) {
            System.out.println("Values same, so no need to swap");
            return;
        }
        boolean found1 = false, found2 = false; 
        Node node = head;
        while (node != null && !(found1 && found2)) {
            if (node.data == value1) {
                node.data = value2;
                found1 = true;
                node = node.next;
                continue;
            }
            if (node.data == value2) {
                node.data = value1;
                found2 = true;
                node = node.next;
                continue;
            }
            node = node.next;
        }
        if (found1 && found2) {
            print(head);
        } else {
            System.out.println("Values not found");
        }
    }
    
    public void insertAtEnd(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
            return;
        }
    
        Node temp = head;
        while (temp.next != null) {
            temp = temp.next;
        }
        temp.next = newNode;
    }
    
    public void print(Node head) {
        Node temp = head;
        while(temp != null) {
            System.out.print(temp.data);
            temp = temp.next;
        }
        System.out.println();
    }
    
    
    static class Node {
        private int data;
        public Node next;
    
        public Node(int data) {
            this.data = data;
        }
    }
    

    }

提交回复
热议问题