반응형

Programing 146

트리 : level에 따른 이진트리 자동 생성 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 이진트리를 짜봤습니당. 워낙 유명한 자료구조라 인터넷에서 쉽게 구조체나 생성함수, 삭제함수 등을 구할 수 있었지만 레벨에 따른 트리를 생성할 수 있도록 만들어놓은 함수는 안보이더라구요, 그래서 간단하게 만들어봤습니다 ㅎㅎ 각 노드의 value는 char형태로 이루어져있는데, default parameter를 통해 자동으로 B부터 CDE~~~쭉쭉 만들어지게 해놨습니다. 숫자를 원하신다면 class의 value 자료형을 바꾸고, default parameter값만 바꿔주시면 되겠죠? #include using namespace std; class node{ private: char value; public: node(..

트리 : 좌우 child를 가지는 트리 만들기

/* * http://sosal.tistory.com/ * made by so_Sal */ 트리도 딱히 어렵진 않습니다. 다만 링크드리스트 (연결리스트)의 구조가 복잡하게 연결되어있을 뿐 입니다. 우리의 디렉토리 풀더나, 회사 구조도 등이 트리로 구성되어있습니다. 주석을 찬찬히 살펴보면서 소스를 보시면 금방 이해하실 수 있을거라 생각합니다 ㅎㅎ. #include #include using namespace std; class node{ private: char value[20]; public: node(char* name){ strncpy(value,name,19); } // 생성자 함수를 이용해 빠르게 value 정의 char* getValue(){ return value; } // value를 리턴하..

큐 : 링크드 리스트로 구현한 간단한 큐

/* * http://sosal.tistory.com/ * made by so_Sal */ 연결리스트로 간단하게 `큐`를 구현해보려고 합니다. 밑에 스택에서 사실 소스를 그대로 재탕해먹었습니다. push부분과 pop 부분이 상반된다는 점 빼고는 간단한 큐와 스택이 다른점은 없으니..^^; #include using namespace std; class node{ private: char value; //간단하게 알파벳 저장하는 스택의 노드~ public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } char getValue(){ // 값을 얻어오기 위한 함수 return value; } node *next; // 다음 노드를 가리킬 포인터 node *pre..

스택 : 링크드 리스트로 구현한 간단한 스택. pop, push

/* * http://sosal.tistory.com/ * made by so_Sal */ 연결리스트로 간단하게 스택을 구현해보려고 합니다. 음;; 걍 손 가는대로 무작정 쳐보니 대충 돌아가네요 #include using namespace std; class node{ private: char value; //간단하게 알파벳 저장하는 스택의 노드~ public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } char getValue(){ // 값을 얻어오기 위한 함수 return value; } node *next; // 다음 노드를 가리킬 포인터 node *prev; // 이전 노드를 가리킬 포인터 }; node *first; node *last; int ..

스택 :: 가장 기본적인 형태. 배열

웹사이트에서 c언어 숙제 셔틀을 해주면서 ( -.- ;;; ;;) 잠깐 만져본 문제였는데, 번뜩 생각이 나네요. 배열을 생성하여 주차장을 만들어, 스택처럼 사용하는것이었습니다 ㅎㅎ. #include using namespace std; char park[5]; int count=0; void put_car(); void pop_car(); void print(); int menu(); int main(){ char val; while(1){ int what = menu(); switch(what){ case 1: put_car(); break; case 2: pop_car(); break; case 3: print(); break; case 4: cout

링크드리스트 :: 추가된 리스트 원하는 위치에서 삭제, 찾기, 바꾸기

/* * http://sosal.tistory.com/ * made by so_Sal */ LINK_ 에서 단순히 리스트를 추가하고, 출력하는법을 보았습니다. 그럼 원하는 위치에 있는 노드를 어떻게 삭제할까요? 포인터를 이용해 하나하나 각 노드(마디)가 연결되어있으므로, 삭제하기 위해선 삭제되기 전의 노드가 삭제된 노드가 가리키는 위치를 알아야만 삭제를 하더라도 리스트가 깨져버리지 않습니다. 따라서 꼭 노드를 삭제하기 전에, 삭제될 노드 바로 앞의 노드는 삭제될 노드 뒤의 노드를 가리키도록 해줘야 하고, 연결이 끊어진 (삭제될) 노드는 삭제해줘야만 합니다. 만약 연결고리만 끊은 후, 삭제하지 않게 된다면 쓰지는 않지만, 메모리에 올라와있는 노드가 계속 쌓이게 됩니다. 따라서 꼭 삭제하기 전에, 삭제될 노..

링크드 리스트의 추가,출력,삭제,찾기,바꾸기 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ #include using namespace std; class node{ private: int value; public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } int getValue(){ // 값을 얻어오기 위한 함수 return value; } void setValue(int val){ value = val; } node *next; // 다음 노드를 가리킬 포인터 }; node* first; // 첫번째 노드 node* newNode; int count=0; // 노드의 숫자를 관리할 conter node* CreateNode(int val); void..

링크드리스트 노드 추가, 연결

/* * http://sosal.tistory.com/ * made by so_Sal */ 추가와 출력밖에 없는 아주 간단한 형태의 링크드 리스트. #include using namespace std; class node{ private: int value; public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } int getValue(){ // 값을 얻어오기 위한 함수 return value; } node *next; // 다음 노드를 가리킬 포인터 }; node* first; // 첫번째 노드 node* newNode; int count; // 노드의 숫자를 관리할 conter node* CreateNode(int val){ node *myNode ..

링크드리스트 :: 간단한 기본 형태 (단방향)

/* * http://sosal.tistory.com/ * made by so_Sal */ #include using namespace std; class node{ private: int value; public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } int getValue(){ // 값을 얻어오기 위한 함수 return value; } node *next; // 다음 노드를 가리킬 포인터 }; node* first; // 첫번째 노드 node* newNode; int count; // 노드의 숫자를 관리할 conter int main(){ node a(1); coutnext = newNode; // 연결! } } 출력하는 함수를 만들어봅시다. v..

반응형