일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- OOP
- array
- java
- System
- Kafka
- C
- WebProgramming
- JavaScript
- UTF-8
- request
- algorithm
- CSS
- 자료구조
- query
- meta
- jsp
- 윈도우즈
- CLASS
- beans
- windows
- Call-by-reference
- Sort
- c++
- function
- HTML
- 투자
- 노드
- 악성코드
- API
- 포인터
- Today
- Total
목록Data Structure (7)
hahahia
#include using namespace std; class Node{ // Node Class public: Node(int n); Node* nextNode; Node* prevNode; int data; }; Node::Node(int n) { data = n; nextNode = NULL; prevNode = NULL; } class Queue{ // Queue public: Queue(); void enQueue(int n); void deQueue(); void printQueue(); int QueueSize(); private: int size; Node* front; Node* rear; }; Queue::Queue() { size = 0; front = NULL; rear = NUL..
ㅎㅎ 학교과제로 쌈박한 트리구현이 나와버렸어요어차피 과제 제출기간도 끝났으니 포스팅해볼게여 ㅋㅋ그전에 잠시 Binary Tree(이진 트리)에 대해 설명해볼게요이진 트리(binary tree)란 한 노드가 최대 두 개의 자식 노드를 가지는 트리를 뜻합니다. 보통 첫 번째 노드를 부모 노드라고 하며 자식 노드는 왼쪽(left)과 오른쪽(right)으로 불린다. 이진 트리는 이진 탐색 트리와 이진 힙의 구현에 흔히 쓰입니다.그림으로 보시면 이해가 빠르실거에요자 이제 여기서 자식의 수가 가변적인 일반 트리구조와 가장 큰 차이점은 바로 자식노드가 2개라는 점인데요. 일반적으로 자식의 수가 정해져 있다면 구현상으로 더 쉬울듯합니다(아님말구요...)그러면 일반 트리에서 이진 트리로 바꾸는 방법이 있을텐데요. 네 있..
환형 큐(이하 Circular Queue)에 대해서 간략히 설명해보겠습니다. 보통 스택이나 큐 같은 자료구조는 선형모양의 구조를 가지고 있는데요...하지만 큐로 단순히 선형모양의 구조를 이용해 구현하게 된다면 문제점이 발생하죠..바로 Front, rear사이에서 dequeue(앞 노드를 삭제)가 계속 이루어지고 enqueue(맨 뒤에 노드를 추가)작업을 하게되면 초기 배열의 N값을 넘어가게되면 추가를 못하게 되고 이전에 dequeue를 작업했던 front 앞의 배열공간들을 사용하지 못한다는게 단점인데요. 이 단점을 극복하고자 만들어진 구조가 바로 Circular queue가 되겠습니다. 사실은 별거 없구...Enqueue 수행 시 => rear = (rear+1) Mod NDequeue 수행 시 => f..
사실 이번학기 자료구조를 수강하는데 첫시간부터 리스트 구현을 했어요...ㅎㅎ제 블로그 보시면 이전에 더블 링크드 리스트 구현을 했었는데 기억도 가물가물하고복습할 겸 다시 포스팅해봐요 ㅎㅎ간단한 기능부터 시작해서 추가 기능을 구현하는 식으로 포스팅 할께요. 일단 음... 단방향 리스트부터 ㅋㅋ노드 추가 및 삭제(오직 head 부분에서만) 그리고 현재 리스트 출력, 리스트 길이 출력 기능 /* 단방향 리스트 구현 made by hahahia */ #include using namespace std; class Node{ // node class public: int value; Node* Next; Node(int input){ value = input; } }; class List{ // list clas..
/* linkedlist.cpp */ #include using namespace std; class Node { public: Node* prevNode; Node* nextNode; int nodeData; int nodeIndex; Node() { prevNode = NULL; nextNode = NULL; nodeData = 0; nodeIndex = 0; } Node(int _data) { prevNode = NULL; nextNode = NULL; nodeData = _data; nodeIndex = 0; } }; class LinkedList{ private: int count; Node* first; public: LinkedList() { count = 0; first = new Node..
어느 한쪽으로는 데이터의 입력이 이루어지고, 다른 한 쪽에서 데이터의 삭제가 이루어지는 구조. 선입선출(FIFO; First-In First-Out)구조라고도 함. 큐를 표현하기 위한 조건 - 전위 포인터(front pointer) : 큐의 실제 위치보다 1이 작은 위치를 가리킨다. - 후위 포인터(rear pointer) : 큐에 마지막으로 삽입된 원소를 가리킨다 - 큐의 공백조건 : front = rear - overflow 조건 : rear >= n(큐가 원소를 저장할 수 있는 개수) - 초기 조건 : front = rear = 0 // Queue.cpp 배열을 이용하여 구현 #include #include #define MAX 5 typedef struct { int key; // 큐의 구조 } ..
입력과 출력 작업이 리스트의 한 쪽 끝에서만 이루어지는 선형 리스트의 한 형태 선입후출의 구조(FILO; First-In Last-Out) /* stack.cpp 배열을 사용한 스택 구현 */ #include #define size 10 char stack[size]; int top = 0; // stack pointer int i = 0; void push(char ch); // push char pop(); // pop void printstack(); // 현재 stacklist 출력 void push(char ch) { if(top==size) // stack overflow { printf("stack is full\n"); return; } stack[top] = ch; // 스택에 한 문자 ..