본문 바로가기
728x90
반응형

PROGRAMING📚/자료구조📑16

STL_템플릿 _ 벡터(배열과 유사) #include #include #include #include #include using namespace std; void main() { vector v; v.reserve(3); v.push_back(10); v.push_back(20); v.push_back(30); vector::iterator iter = v.begin(); while (iter != v.end()) { cout 2021. 4. 3.
STL_템플릿 _데이터 삭제하기 #include #include #include #include #include using namespace std; struct myData { myData(int d) { data = d; } int data; bool operator data; } }; void main() { //삭제 map data; { myData* a = new myData(5); data[a] = 10; } map ::iterator itr = data.begin(); data.erase(itr); delete itr->first; } 2021. 4. 3.
STL_템플릿_순서대로 받아오기 #include #include #include #include using namespace std; struct myData { myData(int d) { data = d; } int data; bool operator data; } }; void main() { listdatas; datas.push_back(myData(5)); datas.push_back(myData(20)); datas.push_back(myData(15)); datas.push_back(myData(1)); //순서대로 받아 오도록 해줌 data.. 2021. 4. 3.
STL_템플릿 _map을 이용하여 (Map 트리) #include #include #include using namespace std; void main() { map myMap; //배열처럼 사용하면 덮어쓰기가 가능하다 myMap[0] = "abc"; myMap[2] = "ㅅㅂㄴ"; myMap[10] = "qwer"; //덮어쓰기 금지 myMap.insert(pair(5, "가나다")); map ::iterator iterFind = myMap.find(2); if (iterFind != myMap.end()) { cout second.c_str(); } cout 2021. 4. 3.
STL_템플릿 _list,string사용해서 출력 #include #include #include using namespace std; void main() { listmyList; myList.push_back("abcd"); myList.push_back("아카데미"); myList.push_back("홍길동"); list::iterator iter = myList.begin(); while (iter != myList.end()) { string t = *iter; cout 2021. 4. 3.
STL_템플릿 _list사용하여 출력 #include #include using namespace std; void main() { listmyList; myList.push_back(50); myList.push_front(300); myList.push_back(200); myList.push_back(150); list::iterator iter = myList.begin(); while (iter != myList.end()) { int out = *iter; cout 2021. 4. 3.
STL_템플릿 사용하기 (기본_출력) #include using namespace std; template T AddData(T a, T b) { return a + b; } template class Data { private: T data; public : Data(T d) { data = d; } void setData(T d) { data = d; } T getData() { return data; } }; void main() { Datadata(0); data.setData(15); cout 2021. 4. 3.
이진트리와 재귀함수 사용 이번 포스트는 이진트리와 재귀함수를 사용해서 이런식으로 동물이름과 특징을 받아서 맞으면 처음으로 돌아가고, 틀리면 그 동물이름과 특징을 받아서 다시 물어보는 프로그램을 짜는 것입니다. 그리고 a를 눌렀을때 출력까지! 일단 Question이라는 구조체를 만들어줍니다. 반복적으로 동물의 이름과 특징, 그리고 이중트리를 만들기위해 맞으면 nYes로 아니면 nNo를 가르키는 포인터를 생성해줘야합니다. 그리고 루트(머리)를 가르키는 곳을 표시해줘야합니다. ->Question* head; 일단 메인으로 가서 문자를 입력 받기 위해서 배열을 만들어줍니다. 그다음에 계속 반복하기위해서 while문을 만들어줘야 루프가 계속 돌아가겠죠? 일단은 처음에 헤드를 고정하기위해서 head가 NULL일때를 만들어줍니다. 처음시작할.. 2021. 4. 2.
포인터를 이용해서 연결리스트 만들기 포인터를 이용해서 연결리스트 구현하기 연결리스트란 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조를 말한다. *각각의 데이터와 포인터를 가지고 있는 것을 노드라함 *노드의 포인터가 다음이나 이전의 노드들과 연결을 담당함 (마치 기차 처럼 한줄로 이어질수 있게 하는 것) 일단 연결리스트를 만들기 위해서는 노드가 필요하고 노드안에 들어갈 데이터와 각 노드를 연결 시킬 포인터가 필요하다. int value는 데이터의 값을 넣기 위해 만들었고 Data *pNext는 포인터를 의미한다. 이걸 그림으로 그려보면 이런식으로 그릴수 있다. 네모난 상자 하나가 노드를 의미하고 빨간 부분이 데이터가 들어가는곳 화살표가 포인터를 의미한다. 이런식으로 데이터를 저장하는 것을 연결.. 2021. 4. 2.
스택을 이용하여 데이터의 입력과 출력 구현하기 스택의 데이터 입력과 출력 구현하기 기본적으로 스택이란 자료 구조의 하나로서 자료의 삽입과 삭제가 한쪽 끝에서만 일어나는 선형 목록을 말한다. 스택의 삽입 삭제가 일어나는 곳을 Top이라 하고 스택을 꺼낼 때를 Pop이라하고, 넣을 때를 Push라고 부른다. 스택은 나중에 들어간 자료가 먼저 나오기 때문에 후입선출이라고도 한다. 5 ~ 8줄까지는 기본적으로 구현하기 위해 사용된 변수를 초기화 시켜 놓은 것이다. Pos는 스택이 가리키는 위치를 알기 위해서 만들어 놓은 것이다. *위의 그림은 pos의 위치가 어떤 식으로 있는지 보여주기 위해서 그린 것* Pos가 증가 할 수록 다음 배열을 가르키게 코드를 구현해야한다. 한마디로 Pos는 top과 같은 의미로 삽입과 삭제가 되는 부분을 알기위해서 만든것이다... 2021. 4. 2.
알고리즘의 성능 분석 //알고리즘의 성능 분석 기법// > 수행시간 측정두개의 알고리즘의 실제 수행 시간을 측정하는 것실제로 구현하는 것이 필요동일한 하드웨어를 사용해야 함> 알고리즘의 복잡도 분석직접 구현하지 않고서도 수행 시간을 분석하는 것알고리즘이 수행하는 연산의 횟수를 측정하여 비교일반적으로 연산의 횟수는 n의 함수 *시간 복잡도 분석: 수행 시간 분석알고리즘이 문제를 해결하기 위한 시간(연산)의 횟수를 시간 복잡도라고 한다. 알고리즘이 이루고 있는 연산들이 몇 번이나 수행되는지를 숫자로 표시한다.산술 연산, 대입 연산, 비교 연산, 이동 연산의 기본적인 연산 ->수행시간이 입력이 크기에 따라 변하면 안됨알고리즘이 수행하는 연산의 개수를 계산하여 두 개의 알고리즘을 비교한다.연산의 수행횟수는 고정된 숫자가 아니라 입력.. 2019. 12. 23.
추상 데이터 타입 //데이터 타입// - 데이터의 집합과 연산의 집합을 말한다.(예) int 데이터 타입데이터 : {... , -2, -1 ,0 ,1 , 2 , ...}연산 : +, -, /, *, % //추상 데이터 타입// - 데이터 타입을 추상적(수학적)으로 정의 한 것을 말한다.-데이터나 연산이 무엇인가는 정의 되지만 데이터나 연산을 어떻게 컴퓨터 상에서 구현 할 것인지는 정의 되지 않는다. -객체 : 추상 데이터 타입에 속하는 객체가 정의된다.-연산 : 객체들 사이의 연산이 정의 된다. 이 연산은 추상 데이터 타입과 외부를 연결하는 인터페이스의 역할을 한다. //추상 자료형(ADT)// 인터페이스와 구현을 분리하여 추상화 계층을 둔 것이다.객체 지향의 클래스(Class)또는 사용설명서와 유사하다. 기능의 구현 부.. 2019. 12. 22.
자료구조(Data Structure)와 알고리즘 //자료구조란?//데이터를 표현하는 방법 및 구조 자료에 대한 처리를 효율적으로 수행할 수있도록 자료를 구분하여 표현하는 것역할 : 프로그래밍에서 가장 기초적인 학문 분야 ->프로그램의 기본 골격 - 효율적이고 안전하게 동작하기 위해서 반드시 필요함->프로그램 개발과정과 건물 건축하는 과정과 유사BUT, 프로그램의 크기가 작은 경우, 대형 프로젝트의 초기 단계 -> 구조적인 결함 발생 목적: 자료구조는 컴퓨터의 자료를 효율적으로 저장하고, 관리하기 위해 사용한다. 사용하는 이유? 메모리를 절약하고 프로그램 수행(실행) 시간을 단축을 목적으로 사용된다. 프로그램의 수행시간 혹은 저장 공간을 고려한 자료구조의 설계->프로그램이 어떻게 사용되는지에 따라 결정(목적 및 기능에 적합한 자료구조 설계)(예) 윈도우.. 2019. 12. 22.
이진트리와 재귀함수 사용 이진트리와 재귀함수를 사용해서 이런식으로동물이름과 특징을 받아서맞으면 처음으로 돌아가고, 틀리면 그 동물이름과 특징을 받아서 다시 물어보는프로그램을 짜는 것입니다. 그리고 a를 눌렀을때 출력까지! 일단 Question이라는 구조체를 만들어줍니다.반복적으로 동물의 이름과 특징, 그리고 이중트리를 만들기위해맞으면 nYes로 아니면 nNo를 가르키는 포인터를 생성해줘야합니다.그리고 루트(머리)를 가르키는 곳을 표시해줘야합니다.->Question* head; 일단 메인으로 가서 문자를 입력 받기 위해서 배열을 만들어줍니다.그다음에 계속 반복하기위해서 while문을 만들어줘야 루프가 계속 돌아가겠죠? 일단은 처음에 헤드를 고정하기위해서head가 NULL일때를 만들어줍니다.처음시작할때는 아무것도 없으니 동물이름과 .. 2019. 2. 13.
포인터를 이용해서 연결리스트 구현하기 연결리스트란 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식으로데이터를 저장하는 자료 구조를 말한다. *각각의 데이터와 포인터를 가지고 있는 것을 노드라함*노드의 포인터가 다음이나 이전의 노드들과 연결을 담당함(마치 기차 처럼 한줄로 이어질수 있게 하는 것) 일단 연결리스트를 만들기 위해서는노드가 필요하고 노드안에 들어갈 데이터와 각 노드를 연결 시킬 포인터가 필요하다.int value는 데이터의 값을 넣기 위해 만들었고Data *pNext는 포인터를 의미한다. 이걸 그림으로 그려보면 이런식으로 그릴수 있다.네모난 상자 하나가 노드를 의미하고 빨간 부분이 데이터가 들어가는곳화살표가 포인터를 의미한다.이런식으로 데이터를 저장하는 것을 연결리스트라고 한다.마지막 노드에 /은 NULL이라는 의미.. 2019. 2. 13.
스택을 이용하여 데이터 입,출력 구현 기본적으로 스택이란 자료 구조의 하나로서 자료의 삽입과 삭제가 한쪽 끝에서만 일어나는 선형 목록을 말한다.스택의 삽입 삭제가 일어나는 곳을 Top이라 하고스택을 꺼낼 때를 Pop이라하고, 넣을 때를 Push라고 부른다.스택은 나중에 들어간 자료가 먼저 나오기 때문에 후입선출이라고도 한다. 5 ~ 8줄까지는 기본적으로 구현하기 위해 사용된 변수를초기화 시켜 놓은 것이다. Pos는 스택이 가리키는 위치를 알기 위해서 만들어 놓은 것이다. *위의 그림은 pos의 위치가 어떤 식으로 있는지 보여주기 위해서 그린 것*Pos가 증가 할 수록 다음 배열을 가르키게 코드를 구현해야한다.한마디로 Pos는 top과 같은 의미로 삽입과 삭제가 되는 부분을 알기위해서 만든것이다. 13 ~ 33 줄은 While문으로 종료를 하.. 2019. 2. 13.
728x90
반응형