분류 전체보기(109)
-
버블 정렬(bubble sort)
버블 정렬 (bubble sort) 버블 정렬은 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하는 비교-교환 과정을 리스트 왼쪽 끝에서 시작하여 오른쪽 끝까지 진행한다. 이러한 리스트의 비료-교환 과정이 한번 완료되면 가장 큰 레코드가 리스트의 오른쪽 끝으로 이동된다. 아래의 그림은 (22,37,15,19,12) 버블 정렬로 정렬한 것이다. 아래는 위의 그림을 코드로 구현한 것이다. #include using namespace std; #define ARRAY_SIZE 5 int main(void) { int array[ARRAY_SIZE] = {22,37,15,19,12}; for(int j = 0; j
2022.04.19 -
스택(stack)-1
스택(stack) 후입선출(LIFO: Last-In First-Out)한다. 다음처럼 스택에 A,B,C를 순서대로 입력했다가 하나를 삭제하면 맨 위에 놓여진 C가 삭제되고 다시 삽입하면 맨 위에 D가 놓여진다. 스택의 구조 스택에서의 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 추가하거나 삭제할 수 없다. 스택의 구조는 다음과 같다. 스택에서 입출력이 이루어지는 부분을 top이라고 하고 바닥부분을 bottom이라고 한다. 스택에 저장되는 것을 element라 하고 element가 하나도 없는 스택을 empty라고 한다. 2022.04.22 - [C++/자료구조] - 스택(stack) - 2
2022.04.18 -
깊은 복사 / 얕은 복사
얕은 복사 #include using namespace std; int main(void) { int *a = new int(5); //int 만큼의 공간을 힙 영역에 할당하여 5라는 값을 집어 넣고, 주솟값을 a에 넣는다. int *b = new int(3); a=b; //런타임에러 발생 delete a; delete b; return 0; } 위의 코드는 런타임 에러를 발생시킨다. (물론 컴파일러의 종류, 설정 및 환경에 따라 아무런 문제도 일으키지 않을 수 있다.) 이유는 다음의 그림과 같다. 우리는 a = b 의 연산을 할 때 b의 값을 a의 값에 복사를 하는 값의 복사를 원했을 것이다. 하지만 a = b 연산을 하면 b의 주솟값이 a에 복사된다. 그렇게 되면 a가 원래 참조하고 있던 영역엔 더이..
2022.04.18 -
explicit
explicit explicit을 사용하면 더 이상 묵시적 변환이 발생하지 않아 대입연산자를 이용한 객체의 생성 및 초기화가 불가능하다. class SoSimple { private: int num1; int num2; public: SoSimple(int n1, int n2) : num1(n1),num2(n2) { } explicit SoSimple(SoSimple ©): num1(copy.num1), num2(copy.num2) { } void ShowSimepleDate() { cout
2022.04.18 -
copy constructor
C++ 스타일의 초기화 C++에서는 다음과 같은 방식으로 선언 및 초기화가 가능하다. 변수와 참조자. //변수, 참조자 초기화 //1.변수, 참조자 초기화 int num(20); // 메모리에 int만큼의 공간을 할당하고 그 안에 20을 넣는다. int &ref(num); // num이라는 공간에 ref라는 새로운 별명을 지어준다. //2.대입연산자를 이용 int num = 20; int &ref = num; 객체 초기화 #include using namespace std; class SoSimple { private: int num1; int num2; public: SoSimple(int n1, int n2) : num1(n1),num2(n2) { } void ShowSimepleDate() { cout
2022.04.16 -
학번, 중간성적, 기말성적 입력 프로그램
#include using namespace std; #define ARRAY_SIZE 100 int main(void) { int studentID, middleScore, finalScore; int *array[ARRAY_SIZE]; int index= 0; while(true) { array[index] = new int[3]; coutmiddleScore>>finalScore; array[index][0] = studentID; array[index][1] = middleScore; array[index][2] = finalScore; index++; } cout
2022.04.14