분류 전체보기233 연결형 리스트 구현 1. 연결형 리스트(Linked List) 란? 하나의 개체를 이루는 노드가 연결되어 리스트를 이루는 "자료구조" 를 말한다. 노드에는 값을 담고 있는 '데이터'와 다음 노드를 가리키는 '링크' 정보를 저장하고 있는 것이 기본이다. '데이터'에는 숫자, 문자열, 또다른 연결리스트 등 다양한 형식을 가질 수 있다. 일반적으로 리스트의 맨 앞 노드를 헤드(Head), 맨 마지막 노드를 테일(Tail)이라고 한다. 2. 배열과의 차이점 배열과 연결리스트는 언뜻 비슷해 보이나, 차이점은 분명히 있다. 배열은 메모리의 연속한 위치에 저장되고, 연결 리스트는 각 노드가 임의의 위치에 저장된다. 또한 배열은 특정 원소를 지칭하는 것이 인덱스를 활용하는 등으로 간편하나(O(1)), 연결 리스트는 선형 탐색을 하듯 한 .. 2022. 8. 12. c, c++ 코딩 영어 단어 templete = 주형, 틀 주형 = 만들려는 물건의 모양대로 속이 비어 있어 거기에 쇠붙이를 녹여 붓도록 되어 있는 틀. delimeter = 구분 문자 2022. 8. 8. 연산자 오버로딩 (operator) 연산자 오버로딩은 c++ 에서 제공하는 기본 타입이 아닌 클래스 타입(사용자 정의 자료형 타입)에도 연산자를 사용 할 수 있게 하는 문법이다. 중단점을 걸고 F10을 눌러보면 operator 함수로 넘어가는 것을 알 수 있다. 반환타입이 클래스명 + &인 이유는 c1 = c2 = c3; 중에 c2 = c3가 먼저 연산 되는데 만약 반환타입이 void면 c1 = ;만 남게 되기 때문에 리턴 값을 *this로 받아서 참조 해주어야한다. c2 = c3 결과 값이 c2로 c1 = c2의 결과 값이 c1으로 2022. 8. 8. 연결형 리스트(Linked List) LinkedList.h LinkedList.cpp #include "LinkedList.h" #include //연결형 리스트 초기화 함수 구현 void initList(stLinkedList* pList) { pList->pHeadNode = nullptr; pList->count = 0; } //연결형 리스트 데이터 추가 함수 구현 void PushBack(stLinkedList* pList, int intData) { //stNode 포인터 pNode 동적 할당 stNode* pNode = (stNode*)malloc(sizeof(stNode)); //pNode의 멤버 iData값은 매개변수 intData; pNode->iData = intData; //PushBack이기 때문에 pNode 의 다음.. 2022. 8. 7. 함수 포인터 어떠한 하나의 함수안에서 다른 함수를 인자로 받아 사용하는 방법 ex) 정렬 함수 안에서 특정 정렬 함수를 인자로 받아 사용함 버블정렬 함수 함수선언 함수호출 및 결과 2022. 8. 5. 인터페이스(interface) interface = 객체의 특정 행동의 특징을 정의하는 문법 1. 인터페이스 형식 interface Interface{ public abstract void 추상메서드명(); public void 메서드명(); //둘다 사용가능 } 2. 인터페이스 vs 추상클래스 ●인터페이스 ●추상클래스 1) 구현하려는 객체의 동작을 정의 1) 클래스를 상속받아 이용 2) 다중 상속 가능 ↔ 2) 다중 상속 불가능 3) implements를 이용해서 구현 3) extends를 이용해서 구현 4) method signature 4) abstract method에 대한 구현 가능 3. 코드 Car클래스 interface1 interface2 Sedan 클래스 SportsCar 클래스 Main 클래스 2022. 8. 4. 추상클래스 추상클래스란? - 추상메서드를 선언할 수 있는 클래스 - 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없는 클래스 - 설계만 되어있고 수행되는 코드에 대해서는 작성이 안된 메서드 추상 메서드 선언 상속 받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없음 추상 메서드 형식 설계만 되어있고 수행되는 코드에 대해서는 작성이 안된 메서드 미완성으로 남겨두는 이유는 상속받는 클래스 마다 반드시 동작이 달라지는 경우에 상속받는 클래스 작성자가 반드시 작성하도록 하기 위해서 ↓ 2022. 8. 4. 상속(inheritance) 상속이란 ? - 기존의 클래스를 재사용하는 방식중의 하나이다. - 한 번 작성한 코드가 재사용이 필요할때 상대적으로 적은 양의 코드를 작성 할 수있다. - 코드를 재사용할시, 코드와 클래스가 많아질수록 관리가 용이해진다. 상속의 특징 - 상속을 통해 클래스간의 계층구조를 만들게 된다. - 부모 클래스에서 정의된 필드와 메소드를 물려 받는다. - 새로운 필드와 메소드를 추가 할 수 있다. - 자식은 오직 부모의 class만 상속받을 수 있다 ↔ 부모는 여러개의 class를 상속 할 수 있다. - 자식 클래스는 부모 클래스로부터 메소드와 필드를 물려받아 사용한다. - 부모 클래스는 자식 클래스에서 정의한 메소드나 필드를 사용하지 못한다. - 자식 클래스가 더 다양한 기능이 가능하므로 자식클래스로 인스턴스를 .. 2022. 8. 2. java 코딩 영어 단어 상속(inheritance) 에서 사용되는 단어 extends - extend = 더 길게[크게/넓게] 만들다, 연장하다, 확대하다 - class 를 확대하고 연장한다는 의미로 해석되는것 같다. 인터페이스(interface)에서 사용되는 단어 implements - 시행하다 (=carry out) - carry out 은 일반적으로 수행하다라는 의미인데 "인터페이스의 기능을 수행한다" 라고 해석했다. 2022. 8. 2. 생성자(constructor) 인스턴스가 생성될때 사용하는 "초기화 method" (new할때만 불리는 기능) 생성자 만드는 규칙 - 클래스(class) 이름 과 동일한 이름으로 지어주어야 한다. - return 값이 오지 않아야한다 (생각해보면 return 값이 필요없다) - parameter 로 받을 매개변수들을 입력한다. ↓ Phone(String model, String color, int price){ this.model = model; // this.model = Phone 클래스에 선언된 멤버 this.color = color; // 생성자 파라미터 model = 값을 전달받을 매개변수 this.price = price; // 전달받은 값이 클래스 멤버 변수에 들어간다. } 2022. 8. 2. 객체 지향 언어 (클래스, 인스턴스 ,메서드) 객체 지향의 기본 개념 : 실제 세계는 사물(객체)로 이루어져 있으며 , 발생하는 모든 사건들은 사물간의 상요작용 이다. 객체 지향 이론 : 상속, 캡슐화, 추상화 장점 - 코드의 재사용이 높다 - 코드 관리가 용이하다. - 신뢰성이 높은 프로그래밍을 가능하게 한다. ● 제어자와 메서드를 이용해서 데이터를 보호, 올바른 값을 유지하도록 함 ● 코드의 중복을 제거해 코드의 불일치로 인한 오작동 방지 클래스와 객체 1)클래스 클래스란 ? - 객체를 정의해 놓은것 - 객체의 설계도 또는 틀 클래스의 용도 : 객체를 생성하는데 사용 ex) 붕어빵기계 = 클래스 , 붕어빵 = 객체 ex) Tv설계도 = 클래스 , Tv = 객체 ↓ 클래스는 객체를 생성하는데 사용될 뿐 객체 그 자체는 아님 2) 객체 객체란? - .. 2022. 8. 1. 가변 배열 가변배열을 하기 위해서는 동적할당을 이용해야한다. main.cpp Arr.h 파일 Arr.cpp 2022. 8. 1. 이전 1 ··· 10 11 12 13 14 15 16 ··· 20 다음