반응형 프로그래머의 길/알고리즘22 연결 리스트 관련 문자열 중복 삭제 프로그램 #include #include #include typedef struct list *linked_list; struct list{ int info; linked_list next; }; void print(linked_list head); linked_list insert(void); linked_list erase(linked_list head); linked_list insert(void) { linked_list head, tail, temp; char c; c=getche(); temp = (linked_list)malloc(sizeof(struct list)); temp->next = NULL; temp->info = c; head = tail = temp; while(c != '\r') { .. 2007. 3. 27. 연결 리스트 ■ 연결 리스트는 왜 쓰느냐? Z A C R A \0 배열을 데이터 삽입과 삭제에 치명적이 약점이 있다! 자 위 ZACRA 라는 Z 앞에 T 라는 문자를 넣으려고 한다고 하면 그냥 생각하면 Z A C R A \0 이 배열의 크기를 늘리고 Z A C R A \0 T 를 넣고 나머지를 뒤로 쭉 밀면 됩니다. T Z A C R A \0 이론상으로는 쉽지만 코드 상으로는 상당히 번거로운 일이다. 데이터의 삭제는 어떤가요? 저기서 C를 삭제한다고 치면 C를 삭제하고 그 뒤의 문자들을 또 앞으로 한 칸씩 당겨야 한다. 말은 쉽지만 코드 상으로는 번거롭고 저런 배열의 구조의 단점이 없는 구조가 연결리스트 이다. ■ 연결리스트의 구조 연결 리스트는 그럼 어떤 구조를 가지고 있는가? Data next → Data nex.. 2007. 3. 27. heap 정렬 u 히프(heap)를 이용해 정렬 ・ 히프 : 우선순위 큐의 일종 Ø 정렬할 원소를 모두 공백 히프에 하나씩 삽입 Ø 한 원소씩 삭제 →제일 큰 원소가 삭제됨 Ø 이 원소를 리스트의 뒤에서부터 차례로 삽입 Ø 오름차순으로 정렬된 리스트를 생성 HeapSort(a[]) n ← a.length - 1; // n은 히프 크기(원소의 수) // a[0]은 사용하지 않고 a[1 : n]의 원소를 오름차순으로 정렬 for (i ← n/2; i ≥ 1; i ← i-1) do // 배열 a[]를 히프로 변환 heapify(a, i, n); // i는 내부 노드 for (i ← n-1; i ≥ 1; i ← i-1) do { // 배열 a[]를 오름차순으로 정렬 temp ← a[1]; // a[1]은 제일 큰 원소 a[1.. 2007. 3. 13. 선택 정렬 (Selection Sort) a[] = ( 3, 2, 5, 1, 4 ) void Selectionsort::sorting() { int i, j, min; for(i=1;i 2007. 2. 28. 이전 1 2 3 4 다음 반응형