deepeshdm3434 Ответов: 0

Корректна ли реализация графа с использованием списка смежности ?


Я новичок в DSA , так как последние пару дней я пытался найти правильную реализацию для графика, используя список смежности.


Ниже я привел весь код для того, как, по моему мнению, должен быть реализован список смежности.


Я создал SiinglyLinkedlist все с нуля.
И я использую хэш-карту, чтобы улучшить временную сложность.

Целочисленный ключ в хэш-карте действует как VERTICE & состоит из Linkedlist по своему значению.

В вершинах я храню целочисленный идентификатор, а в Linkedlist-все имена друзей для этого конкретного идентификатора.


В графе 3 методы -

1] insertVertice(int ID ) - это создает пустой linkedlist по заданному идентификатору в hashmap .

2] insertDataAtID (int ID , String data) - это вставка данных в linkedlist по заданному идентификатору.

3] printAllDataAtID(int ID) - это печатает все имена друзей или данные, присутствующие в linkedlist по заданному идентификатору / ключу в хэш-карте.



Не могли бы вы, пожалуйста, пройти через реализацию и посоветовать какие-нибудь ошибки ?
Или лучше несколько предложений о том, как список смежности может быть реализован более эффективно ?

Спасибо Вам за эти усилия.




-----------------------------------------------------------



import java.util.HashMap;

public class demo {

    static HashMap<Integer,SinglyLinkedlist> graph = new HashMap<>();


    public static void main(String[] args){

      Graph graph = new Graph();


      graph.insertVertice(101);
      graph.insertDataAtID(101,"Deepesh");
      graph.insertDataAtID(101,"Kiran");
      graph.insertDataAtID(101,"Aryan");


      graph.insertVertice(201);
      graph.insertDataAtID(201,"Carl");
      graph.insertDataAtID(201,"Arun");
      graph.insertDataAtID(201,"Kishan");
      graph.insertDataAtID(201,"Betth");


      graph.printAllDataAtID(101);
      graph.printAllDataAtID(201);


    }

}





--------------------------------------------------------------





import java.util.HashMap;

public class Graph{

     HashMap<Integer,SinglyLinkedlist> maplist = new HashMap<>();


    void insertVertice(Integer id ){

        maplist.put(id,new SinglyLinkedlist());

    }

     void insertDataAtID(Integer id, String data){

        if (maplist.get(id)==null){
            System.out.println("No such Vertice exist with id : " + id);
            System.out.println("Create the Vertice first by calling insertVertice() method.");
        }

        SinglyLinkedlist linkedlist = maplist.get(id);
        linkedlist.insertNode(data);

    }


     void printAllDataAtID(Integer id) throws NullPointerException {
         if (maplist.get(id) == null) {
             System.out.println("No such Vertice exist with id : " + id);
             System.out.println("Create the Vertice first by calling insertVertice() method.");
         } else {

             SinglyLinkedlist linkedlist = maplist.get(id);
             linkedlist.printAll();

         }
     }

}






------------------------------------------------------------





public class SinglyLinkedlist {

    Node head;
    Node tail;

    public static class Node {
        Node next;
        String data;
    }



    void insertNode(String data) {

        Node newNode = new Node();
        newNode.data = data;

        if (head == null) {
            head = tail = newNode;
            newNode.next = null;
        } else {

            Node temp = head;

            while (temp.next != null) {
                temp = temp.next;
            }

            temp.next = newNode;
            newNode.next = null;
            tail = newNode;

        }
    }


    void removeLastNode() {
        Node temp = head;

        while (temp.next.next != null) {
            temp = temp.next;
        }

        Node removedNode = temp.next;
        tail = temp;
        tail.next = null;

        System.out.println("Removed value : " + removedNode.data);

    }


    void printAll() {
        if (head == null) {
            System.out.println("List is Empty !");
        } else {
            Node temp = head;

            while (temp != null) {
                System.out.print(temp.data + "  ");
                temp = temp.next;
            }
        }
    }


    boolean search(String data) {
        if (head == null) {
            System.out.println("List is Empty !");
        } else {
            Node temp = head;

            while (temp != null) {

                if (temp.data.equals(data)) {
                    System.out.println("Value found !");
                    return true;
                }
                temp = temp.next;

            }

            System.out.println("Value not found !");

        }
        return false;
    }
}


Что я уже пробовал:

Я попробовал google и другие интернет-ресурсы

Garth J Lancaster

Почему бы вам не написать модульные тесты на Java (я уверен, что это возможно) ... если вы войдете в эту привычку, то хорошо подготовитесь к профессиональному будущему ... в идеале вы бы сделали это, когда добавили каждую "функцию" / " функцию

deepeshdm3434

Да , это прекрасно, но сейчас я просто спрашиваю о реализации.
Я просто уверен, что это то, как граф реализуется в общем виде ?

0 Ответов