자료구조 35

Sequence (based Doubly LinkedList) 실습

1. class Node - int e : 데이터 - Node* prev : 이전노드 포인터 - Node* next : 다음노드 포인터 2. class Iterator : 노드에 접근하는 포인터 개념 - Node* v : Iterator가 가리키는 대상 노드 (초기화 : begin()) 3. Iterator : int &operator*() - Iterator가 가리키는 대상의 값을 반환 - * 연산자를 사용하기 위한 오버로딩 개념 - v->e를 반환한다 4. Iterator : bool operator==(const Iterator &p) const - 받아온 p와 Iterator가 같은 Iterator인지 여부를 반환한다 - main에서 보내는 Iterator를 그대로 비교해야 하기에 Iterator..

자료구조 2020.10.28

Vector (based Array) 실습

1. class Vector (based Array) - int capacity : 최대크기 - int n : 자료 수 - int* vector : 배열 포인터 2. at(idx) - idx 위치의 값을 반환한다 3. set(idx, data) - idx 위치의 값을 data로 설정한다 4. insert(idx, data) - idx 위치에 data를 넣는다 - idx 위치에 값이 있는경우 뒤로한칸씩 미룬 후 data를 넣는다 5. erase(idx) - idx 위치의 값을 삭제한다 - idx+1 위치부터 앞으로 한칸씩 이동한다 6. reserve(n) - n개의 자리를 확보한다 - 기존 크기가 n보다 크거나 같은경우 변함없다 - 기존크기 * 2로 수정할 경우 n = 2*capacity 가 된다 - n의..

자료구조 2020.10.27

Queue game2 (based LinkedList) 실습문제

- 코드 #include using namespace std; //Queue를 LinkedList를 통해 구현, 게임을 만들기 //이긴경우 카드값차-1을 다음판 상대카드에 합산 class Node { public: int data; Node* next; Node(int data) { this->data = data; this->next = NULL; } }; class LinkedList { public: Node* head; Node* tail; LinkedList() { this->head = NULL; this->tail = NULL; } int empty() { if(head == NULL && tail == NULL) { return 1; } else { return 0; } } void app..

자료구조 2020.10.27

Queue game (based LinkedList) 실습문제

- 코드 #include using namespace std; //Queue를 LinkedList를 통해 구현, 게임을 구현 //win -> hp-1만큼 다음회에 추가 //class Node, class LinkedList, class Stack class Node { public: int data; Node* next; Node(int data) { this->data = data; this->next = NULL; } }; class LinkedList { public: Node* head; Node* tail; LinkedList() { this->head = NULL; this->tail = NULL; } int empty() { if(head == NULL && tail == NULL) { re..

자료구조 2020.10.27

Queue (based LinkedList) 실습

1. class Node - int data : 생성시 값을 받아 저장한다 - Node* next : 초기값=NULL 2. class LinkedList - Node* head : 초기값=NULL - Node* tail : 초기값=NULL 3. LinkedList : empty() : 여기 예제에선 안쓰인다 - head, tail 둘다 NULL 인지 여부 반환 4. LinkedList : append(data) - tail->next 위치에 새로운노드를 넣는다 - tail을 새로운노드로 수정한다 5. LinkedList : remove_front() - head 위치의 값을 반환 후 삭제한다 - head를 temp로 임시저장한다 - temp의 값을 tmp로 임시저장한다 - head = head->next..

자료구조 2020.10.27

Queue (based Array) 실습

1. First in First out - 처음 들어온 자료가 처음 나온다 Stack과 상반되는 개념 2. class Queue (based Array) - int front : 자료의 맨앞 index 위치, 초기값 = 0 - int rear : 자료의 마지막 index 위치, 초기값 = -1 - int capaticy : 큐의 크기 - int* Q : 배열의 포인터 3. enqueue(data) - 큐의 rear에 data를 추가한다 - 원형큐의 경우 size() 값이 capacity-1 인 경우 Full 상태를 반환한다 - 그외의 경우 rear = (rear+1)%capacity 로 수정한다 - Q[rear]위치에 data를 넣는다 4. dequeue() - 큐의 front를 반환하며 제거한다 - 큐..

자료구조 2020.10.27

Stack : PostFix (based LinkedList) 실습문제

- 코드 #include using namespace std; //stack을 LinkedList로 구현, 후위표기법 계산 구현 //class Node, LinkedList, stack 필요하다 class Node { public: int data; Node* next; Node(int data) { this->data = data; this->next = NULL; } }; class LinkedList { public: Node* head; Node* tail; LinkedList() { this->head = NULL; this->tail = NULL; } int empty() { if(head == NULL && tail == NULL) { return 1; } else return 0; } vo..

자료구조 2020.10.27

Stack (based LinkedList) 실습문제

- 코드 #include using namespace std; //Stack을 LinkedList로 구현, empty, top, push, pop, size //class Node, LinkedList, Stack 필요하다 class Node { // Node : 1. data, 2. next 포인터가 필요하다 public: int data; Node* next; Node(int data) { this->data = data; this->next = NULL; } }; class LinkedList { //List : 1. head, 2. tail 포인터가 필요하다 //empty, append, delete, peek이 필요하다 public: Node* head; Node* tail; LinkedList..

자료구조 2020.10.27

Stack (based Array) 실습문제

- 코드 #include using namespace std; //스택을 array로 구현, empty, top, push, pop, size //class Stack 구현 class Stack { //1. 배열포인터, 2. 사이즈, 3. top위치가 필요하다 public: int capacity; int* stack; int t; //스택 생성자 : 1. 사이즈 설정, 2. 배열 설정, top 설정한다 Stack(int capacity) { this->capacity = capacity; this->stack = new int[capacity]; this->t = -1; } int empty() { if(t == -1) return 1; else return 0; } int top() { if(empt..

자료구조 2020.10.27

Stack (based LinkedList) 실습

1. top = tail 노드 2. Class Node - int data : 노드의 값 - Node* next : 다음노드 포인터 3. Class LinkedList - Node* head - Node* tail 4. LinkedList() : 리스트 생성자 - this->head = NULL - this->tail = NULL 5. empty() - 만약 head, teil 둘다 NULL 인 경우 1 반환 - 그외의 경우 0 반환 6. peek() - tail->data 반환 7. append(data) - 새로운 노드를 생성하여 data를 저장한다 - 만약 empty() 상태라면 head, tail을 새로운 노드로 저장한다 - 그외의 경우 tail->next에 새로운 노드를 저장한다 - tail을 ..

자료구조 2020.10.26

Stack (based Array) 실습

1. Stack (based Array) - int* Stack : 스택, 즉 배열포인터 - int capacity : 스택의 크기 - int t : 현재 스택의 top 위치값 (index) 2. Stack(int capacity) : 생성자 - this->capatity = capacity; - this->Stack = new int[capaticy]; - this-> t = -1; 3. size() - 스택에 들어있는 자료수, t+1 반환 4. empty() - 스택이 비었는지 여부 반환 (t==-1 여부 반환) 5. top() - 스택의 상위값 반환 (Stack[t] 반환) 6. push(int val) - 만약 스택이 다 찬 경우 (t+1 == capacity) : Full 반환한다 - 스택에 새..

자료구조 2020.10.26