스택 2

퀵소트 함수, 재귀와 노재귀(Non-Recursive) 형태,,, 동적배열 스택 이용

// 재귀함수 void __stdcall QuickSort(int *arr, int n) { int left, right; int pv, t; // 갯수가 2 이상이면 if(n > 1){ // 피벗 결정 pv=arr[n-1]; // 좌우 인덱스 설정 및 비교, 교환 left=0; right=n-2; while(TRUE){ while(arr[left] pv) --right; // 시작 인덱스보다 작거나 같으면 값 조사 필요 없다. if(left >= right) break; t=arr[left]; arr[left]=arr[right]; arr[right]=t; ++left; --right; } // 피벗 자리와 left 자리 교환 ..

연결리스트 스택 이용해 노재귀 형태로 html 소스 뽑아보기

자료구조, 알고리즘 둘러보다가 퍼뜩 떠올라서 구성해 보았다. 스택을 이용하니 노재귀형태로 구성할 수 있었다. 재귀의 오버플로우는 뭐 요즘같이 스레드에 할당되는 기본 스택이 1메가? 정도되는 상태에서 웬만큼 흘리는 코딩을 하지 않으면 거의 발생할 일이 없겠지만서두,,, 이와 별도로 하나의 함수에서 기타 처리를 모두 할 수 있으니 깔끔해진 듯 하다. 이전에 재귀 형태로 돌리는 경우 기타 처리를 하려면 보통 재귀함수 + 기타처리를 하는 함수,,, 2개로 구성하는 경우가 많았다. // 재귀함수 사용하지 않고 스택으로 해결 // 연결리스트 스택으로 구성한다. // 이 함수 성공시 호출부에서는 사용하고 난 후 결과값을 잊지말고 free해줘야 된다. LPWSTR __stdcall GetHtmlSourceNoRecur..