다이어그램의 개념
그래프는 알고리즘에서 트리의 확장입니다. 트리는 위에서 아래로 데이터 구조입니다. 노드에는 상단에서 아래로 배열 된 상위 노드 (루트 노드 제외)가 있습니다. 그래프는 아버지-아들 노드에 대한 개념이 없으며 그래프의 노드는 모두 동일 관계이므로 결과가 더욱 복잡해집니다.
방향이없는 그래프 지시 그래프
그림 g = (v, e), 여기서 v는 정점을 나타내고, e는 가장자리를 나타내고, 가장자리는 고정점 쌍 (u, v), 여기서 (u, v) ∈V입니다.
지난 이틀 동안 그래프에 대한 알고리즘을 만났습니다. 온라인으로 오랫동안 검색했으며 데이터 구조 및 관련 작업에서 Java 버전의 그래프를 찾을 수 없었습니다. 그래서 나는 데이터 구조 책의 Java 버전을 찾아 읽었습니다. 다음은 책의 설명을 기반으로 편집 된 그래프의 거부 된 그래프 저장 및 깊이 우선 순위의 요약입니다. 그러나이 트래버스는 연결된 그래프를 가로 질러 가질 수 있으며 연결되지 않은 그래프를 가로 질러 여전히 수정해야합니다. 도움이 필요한 사람들에게 도움이되기를 바랍니다.
패키지 com.homework;/*** 스택 클래스를 정의하십시오*/클래스 stackx {private final int size = 20; private int [] st; private int top; // 스택 public stackx () {st = new int [size]; top = -1;} // Stack Public Void Push (int J) {st [++ top] = j; st [top-];} // 스택 int peak ()의 상단 요소를 반환 {return st [top];} // 스택이 빈 공개 부울 isempty () {return (top == -1);}}/** * @author Administration {vertex {public char wolean label at aver vertex; = 실험실; wasvisited = false;}}/** * 그래프 클래스 정의 * @author 관리자 * */클래스 그래프 {private vertexlist []; // node array private int adjmat [] []; // node matrix private int nverts; // 초대화 된 프리 개인 스택 텍스 thestack; // stack // 그래프 () {vertexlist = new vertex [num]; adjmat = new int [num] [num]; nverts = 0; for (int i = 0; i <num; i ++) {for (int j = 0; 정점 (lab);} // 두 노드 사이의 에지 추가 공개 void addedge (int start, int end) {adjmat [start] [end] = 1; adjmat [end] [start] = 1;} // 특정 노드 공개 void displayvertex (int v) {system.out.print (vertexlist [v] .label);} // un execed oneced get execed public int get get get evected public void displayvertex (int v) {int v) {int v) {int v). getAdJunvisitedVertex (int v) {for (int j = 0; dfs () {vertexlist [0] .Wasvisited = true; displayVertex (0); thestack = new stackx (); thestack.push (0); while (! thestack.isempty ()) {int v = getAdjunvisitedVertex (thestack.peak ()); if (v == -1) // 노드가 존재하지 않는 경우 thestack.pop (); else {vertexlist [v] .Wasvisited = true; displayVertex (v); (int j = 0; thegraph.addvertex ( 'a'); thegraph.addvertex ( 'b'); thegraph.addvertex ( 'c'); thegraph.addvertex ( 'd'); thegraph.addvertex ( 'e'); thegraph.addedge (0, 1); // ab thegraph.addedge (1, 2); // bc thegraph.addedge (0, 3); // ad thegraph.addedge (3, 4); // de thegraph.addedge (2, 4); // ce system.out.print ( "순서 방문 : "); TheGraph.dfs (); System.out.println ();}}} 프로그램 실행 결과 :
방문한 명령 : 낙해
요약
위의 내용은 Java 프로그래밍되지 않은 그래프 그래프 구조의 스토리지 및 DFS 작동 코드에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Java 프로그래밍은 그래프 기반 깊이 우선 첫 번째 검색 및 너비 우선 검색 완료 코드를 구현합니다.
깊이 우선 및 폭 최초의 Java 구현 코드 예제
두 개의 트리 메뉴 구조에 대한 Java 프로그래밍 변환 코드
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!