일지

자료구조...76

niamdank 2021. 4. 13. 08:23

ArrayGraph 기본 구조)

생성자, 소멸자, 테스트용 출력 메서드를 구현한다.

 

ArrayGraph.h

#pragma once
#include <iostream>

class ArrayGraph
{
public:
#pragma region 생성자
	ArrayGraph(size_t nodeCapacity = 5);
	~ArrayGraph();
#pragma endregion

#pragma region 속성
	size_t NodeCapacity() { return m_nodeCapacity; }
	size_t NodeCount() { return m_nodeCount; }
#pragma endregion

#pragma region 메서드
	void InsertNode();
	void InsertEdge(int from, int to);

	void RemoveNode(int index);
	void RemoveEdge(int from, int to);
	void Clear();

	size_t GetDegreeIn(int index);
	size_t GetDegreeOut(int index);

	void PrintInfo();
#pragma endregion

private:
#pragma region Class Util
#pragma endregion

#pragma region 변수
	size_t m_nodeCapacity;
	size_t m_nodeCount;

	int** m_graph;
#pragma endregion
};

 

ArrayGraph.cpp

#pragma region 생성자
/// <summary>
/// 지정된 크기 혹은 기본 크기의 ArrayGraph를 생성한다.
/// </summary>
/// <param name="nodeCapacity">생성할 그래프의 크기(기본:5)</param>
ArrayGraph::ArrayGraph(size_t nodeCapacity)
	: m_nodeCapacity(nodeCapacity), m_nodeCount(0)
{
	m_graph = new int* [nodeCapacity];
	for (int i = 0; i < nodeCapacity; i++)
	{
		m_graph[i] = new int[nodeCapacity];
		std::fill_n(m_graph[i], nodeCapacity, 0);
	}
}

/// <summary>
/// 메모리 누수를 막기 위해 동적 생성한 노드들을 제거한다.
/// </summary>
ArrayGraph::~ArrayGraph()
{
	for (int i = 0; i < m_nodeCapacity; i++)
	{
		delete[] m_graph[i];
	}
	delete[] m_graph;
}
#pragma endregion

#pragma region 메서드
/// <summary>
/// 테스트용 리스트 정보 출력 함수
/// </summary>
void ArrayGraph::PrintInfo()
{
	std::cout << "----------------------\n";
	for (int i = 0; i < m_nodeCapacity; i++)
	{
		for (int j = 0; j < m_nodeCapacity; j++)
		{
			std::cout << ' ' << m_graph[i][j] << ' ';
		}
		std::cout << '\n';
	}
	std::cout << "----------------------\n\n";
}
#pragma endregion

 

main.cpp

#include <iostream>
#include "Graph/ArrayGraph.h"

// 생성한 자료구조 테스트용 메인
int main()
{
	ArrayGraph graph;

	graph.PrintInfo();
}

 

실행결과

----------------------
 0  0  0  0  0
 0  0  0  0  0
 0  0  0  0  0
 0  0  0  0  0
 0  0  0  0  0
----------------------