본문 바로가기

Major/Data Structure & Algorithm

(14)
연결리스트 노드 개수 카운팅,특정 노드 순서 바꾸기,첫번째 노드 삭제하기 ... - 노드 개수 카운팅하는 메소드 public int countNode() { ListNode current = head; int count = 0; while(current != null){ current = current.link; // current = current.nextNode count++; } return count; } 솔직히.... 진짜 느낌대로 짠 코드라 잘 짰는진 모르겠지만 current가 head를 참조하게 한 뒤에 current 가 null값이 되기 전까지 count 변수를 증가시킨다. // L = (빨강, 주황, 노랑, 초록, 파랑, 남색, 보라) int counting; counting = L.countNode(); for(int i = 0; i < counting; i++) ..
[JAVA] 연결리스트, 노드, 삽입 및 삭제 들어가기에 앞서 노드 할당 과정에 대해서 정확히 알고 있어야 한다. 처음에 제대로 이해도 못한 채 무작정 코드부터 뜯어보아서 그런가 오개념만 잔뜩 적립했다. - 자유 공간 리스트에서 노드를 할당할 때는 항상 첫번째 노드를 할당한다. 1. 리스트(L)의 첫번째 노드(head node)의 주소를 포인터 new에 저장하여 포인터 new가 할당할 노드를 가리킨다. 나는 처음에 주소를 저장하는 것이 아닌 link값을 저장하는 것으로 잘못 이해했다. link가 아니라 노드 자체의 주소!인 것이다. 이 둘의 차이를 잘 알아야 이러한 자료구조를 보다 효과적으로 이해할 수 있을 것 같은... 2. 포인터 L에 리스트의 두번째 노드의 주소(L.link) 저장 여기서도 주소라는 단어가 나오는데 앞에서 말한 주소와는 다르다...
[python+]연결리스트,노드,삽입,삭제 노드 : 연결 리스트에서 각각의 원소를 칭하는 말. 노드가 갖고 있는 것은 데이터와 뒤쪽 노드를 가리키는(참조하는) 포인터이다. Head Node : 맨 앞에 있는 노드 Tail Node(꼬리 노드) : 맨 끝에 있는 노드 Prodecessor Node(앞쪽 노드) : 각 노드에서 바로 앞에 있는 노드 Successor Node(뒤쪽 노드) : 바로 뒤에 있는 노드 * 노드가 하나도 없는 빈 연결 리스트를 생성한다. head는 머리 노드에 대한 참조일 뿐 머리 노드 그 자체가 아니다. 노드가 존재하지 않는 빈 연결리스트는 head가 참조하는 곳이 없으므로 (=참조해야 하는 노드가 존재하지 않으므로) 그 값이 null. - 가장 끝에(꼬리에) 삽입 1. 리스트가 비어 있을 때 : 맨 앞에 노드 삽입하는 것..
배열 순차 자료구조, 선형 리스트, 다항식의 순차 자료구조 선형 리스트 : 자료들 간의 순서를 갖는 리스트. 원소를 나열한 순서 = 원소들의 순서 원소가 하나도 없는 리스트는 공백 리스트라고 하며, 빈 괄호를 사용하여 표현한다. 선형 리스트 원소의 논리적 순서와 같은 순서로 메모리에 저장이 된다. 순차 자료구조의 원소 위치 계산(메모리 주소) 선형리스트가 저장된 시작 위치 : α 원소의 길이 : ι i번째 원소의 위치 = α + (i-1)* ι 1차원 배열은 선형의 형태를 띄고 있어 하나의 인덱스 값을 이용해서 모든 원소에 접근 가능하다. int형 1차원 배열이 있다고 하자. int형은 4byte의 크기를 가진다. 따라서 배열의 인덱스가 하나 증가할 때마다 메모리 주소는 4 byte씩 증가한다. 배열에서 첫번째 원소의 인덱스는 0이고 n번째 원소의 인덱스는 (n..
[2월 18일] Selection Sort Algorithm 삽입정렬, Insertion Sort Algorithm 삽입정렬 *참고 영상 : https://youtu.be/GUDLRan2DWM #1 Selection Sort 선택정렬 1. Scan the whole array to find the minimum 2. Instead of filling 1 in 0th index on array B, SWAP with the 0th index. Because that's where 1 belongs, it belongs to 0th index. 3. Look for the next minimum, 1 need NOT to be considered. Scan index 1 to 5th. *The array is divided into 2 parts sorted or else. And we need to do (n-2) passes...
[2월 5일] 버블정렬 알고리즘, 문자수만큼 회전하기 #문자수만큼 오른쪽으로 한바퀴 회전하여 출력하는 프로그램 한 글자를 임시 변수에 저장해두고 제쳐둔다음, 나머지 글자를 하나씩 밀어주기(=회전시키기) 여기서 중요한건.. tmp라는 변수에 문자를 저장하는 것임. //문자수만큼 오른쪽으로 한바퀴 회전하여 출력하는 프로그램 //길이 구하는 함수 int whatLen(char* snt) { int len = 0; for (int i = 0; snt[i] != '\0'; i++) //표현 기억해두기. len++; return len; } void move(char* snt, char tmp) { int len = whatLen(snt); for (int i = 0; i < len; i++) { /*임시변수 tmp에 가장 끝 글자 저장하고, 끝에서부터 한칸씩 밀어준..