스택(Stack) 먼저 들어간 데이터가 가장 마지막에 나오는 구조(Last In, First Out : LIFO) 삽입과 삭제가 한쪽 끝에서만 자료를 넣고 뺄 수 있다. ex) 자동메모리, 네트워크 프로토콜 스택(Stack)의 주요 기능 스택의 초기화 int stack[100]; //스택 배열 int size = 0; // 스태의 크기 삽입(Push) 스택 위에 새로운 노드를 쌓는 작업 void push(int data) { stack[size] = data; size = size + 1; } 삭제(Pop) 스택에서 최상위 노드를 걷어내는 작업 int pop() { if (size < 0) return 0; int pop = stack[size]; size = size - 1; return pop; } ..
Algorithms/structure
Linked List(연결리스트) 개념과 구조 데이터가 연속적인 리스트 새로운 노드를 삽입하거나 삭제가 간편 링크라는 개념을 통해 물리 메모리를 연속적으로 사용하지 않아도 된다. 데이터를 구조체로 묶어 포인터로 연결 Linked List에는 기본적으로 Node와 Link라는 용어를 사용 HeadNode에는 데이터를 저장하지 않는다. 단지 LinkedList의 시작부분임을 나타낸다.(ex:기관차에서 headNode는 승객이 타지 않음) LinkedList의 마지막 부분을 나타내는 노드도 있다. End Node or Tail Node라고 불리며, 데이터를 저장하지 않는다. 즉, Head, Tail(End) 노드는 데이터를 저장하지 않음(저장할 수 없다는 것이 아니라 묵시적으로 데이터를 저장하지 않는다는 것)..
알고리즘(Algorithm) 알고리즘은 수학, 컴퓨터과학, 언어학 또는 관련분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다. 계산 또는 작업을 처리하기 위한 순서 요리의 레시피(요리의 재료를 이용하여 레시피 대로 요리한 다음 요리를 완성) 특정문제를 컴퓨터로 해결하기 위한 순서 어떤 문제를 해결하는 방법을 모두 알고리즘이라 한다. 입력 0개 이상의 입력이 존재햐아한다 출력 1개 이상의 출력이 존재해야한다 명백성 각 명령어의 의미는 모호하지 않고 명확해야한다 유한성 한정된 수의 단계 후에는 반드시 종료되어야한다 유효성 각 명령어들은 실행 가능한 연산이어야 한다 코딩 테스트나 인터뷰에서 알고리즘을 보는 이유는 문제를 모델링하고 해결하는 능력을 알아보기 위..