전체 글

그래프를 구현하는 방법에는 크게 두가지가 있다.1. 순차 자료구조를 이용한 그래프의 구현 : 인접 행렬2. 연결 자료구조를 이용한 그래프의 구현 : 인접 리스트 이번에는 인접행렬로 그래프를 구현해보겠다. ▶전체코드#include #include #define MAX_VERTICES 5 // 최대 정점의 수 제한// 그래프 구조체typedef struct Graph { int numV; //정점의 수 설정 int adjMatrix[MAX_VERTICES][MAX_VERTICES]; // 인접 행렬} Graph;// 그래프 초기화void graphInit(Graph* g, int numV) { g->numV = numV; ..
▶순차 자료구조의 문제점1. 삽입 연산이나 삭제 연산 후에 연속적인 물리 주소를 유지하기 위해서 원소들을 이동시키는 추가 작업과 시간 소요2. 순차 자료구조는 배열을 이용해 구현하기 때문에 배열이 갖고있는 메모리 사용의 비효율성 문제를 그대로 가짐   ▶연결 자료구조자료의 논리적인 순서와 물리적인 순서가 불일치함물리적인 순서를 맞추기 위한 오버헤드가 발생하지 않는다.여러개의 작은 공간을 연결하여 하나의 전체 자료구조를 표현크기 변경이 유연하고 더 효율적으로 메모리를 사용  ▶연결리스트란?연속된 노드의 연결제노드란? 연결리스트에서 사용되는 하나의 데이터 덩어리(데이터, 링크를 가지고있음)   ▶순차 자료구조와 연결 자료구조의 비교순차자료구조필요한 전체 메모리 크기를 계산하여 할당하고, 할당 된 메모리의 시..
▶Queue란? Queue는 앞뒤가 뚫려있는 쇠파이프를 떠올리면 이해하기 쉽다. 우리는 쇠파이프의 뒤로 차곡차곡 데이터를 넣을것이다. 그 후 데이터를 꺼내고싶으면 그 데이터를 앞에서 꺼낼 것이다. 즉, 먼저 들어가 데이터가 가장 먼저 나오게 된다. 이것을 First In First Out(FIFO) 데이터 구조라고 부른다. 원형큐는 이 파이프를 동그랗게 만든것이다. 동그랗게 만들면 메모리를 아낄 수 있다는 장점이 있다. ▶큐의 ADT 데이터를 집어넣을 수 있는 선형(linear) 자료형 FIFO(First In First Out) - 먼저 집어넣은 데이터가 먼저 나옴 데이터를 집어 넣는 enqueue, 데이터를 추출하는 dequeue 등의 작업을 할 수 있음큐는 순서대로 처리해야 하는 작업을 임시로 저장..
▶Stack이란? 스택은 프링글스통을 생각하면 이해하기 쉽다. 차곡차곡 쌓여져있는 맛있는 프링글스를 생각해보자. 우리는 프링글스의 위에서부터 꺼내먹는다. 즉, 가장 나중에 들어온 프링글스부터 꺼내먹는다. 이것을 자료구조에서는 마지막에 추가된 항목이 가장 먼제 제거되는 Last In First Out(LIFO) 데이터 구조라고 부른다. ▶스택의 ADT 데이터를 집어넣을 수 있는 선형(linear) 자료형 LIFO(Last In First Out) - 나중에 집어넣은 데이터가 먼저 나옴 데이터를 집어넣는 push, 데이터를 추출하는 pop, 맨 나중에 집어넣은 데이터를 확인하는 peek 등의 작업을 할 수 있음 스택은 서로 관계가 있는 여러 작업을 연달아 수행하면서, 이전의 작업 내용을 저장해 둘 필요가 있..
다형성 : 하나의 메서드나 클래스가 있을 때, 그것이 다양한 방법으로 동작하는것 자바는 오버로딩과 오버라이딩을 통해서 다형성을 지원한다. 오버로딩(Overloading) 같은 이름의 메서드 여러개를 가지면서, 매개변수의 유형과 개수를 다르게 사용하는것 오버라이딩(Overriding) 상위 클래스(부모클래스)가 가지고 있는 메서드를, 하위클래스(자식 클래스)가 재정의 해서 사용하는 것. ▶오버로딩(Overloading) 같은이름의 메서드를 여러개 정의하고 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답할 수 있도록 하는 방식이다. //오버로딩 예제 public class Test { public void overloadingTest(){ System.out.println("매개변수 없지롱"..
개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다. 왜 long를 안쓰고 Long를 쓸까? 이 둘의 차이점은 무엇일까? 궁금해졌다. 바로 알아보자. ▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란? 일단 원시타입은 뭐고 래퍼클래스는 뭘까? 이 사진을 보면 이해가 될 것이다. 기본자료형이 원시타입이고, 래퍼클래스는 원시타입을 객체화 한 것이다. 원시타입(기본자료형)은 언제나 값이 존재한다. 필드에서 초기화하면 디폴트 값으로 0에 준하는 값이 들어가며, 메소드나 클래스 내에서는 초기화 및 선언을 같이 해줘야 실행이 된다. (초기화만하면 에러 발생) 래퍼클래스는 값이 존재하지 않는 "NULL" 상태일 ..
LearningStudy
끊임없는 탐구