C - 알고리즘 - 더블링크드리스트(상)
링크드리스트에는 현재위치를 뿅! 뛰어넘는 부분이 있답니다.(start=start->next) 이런 부분이 오기 전에 포인터에 잠시 이전주소를 저장시켰다가 뿅 넘고 나서는 저장 시켜뒀던 이전 주소를 새로 만들어진 구조체에 연결 시켜줍니다. 언제든 돌아 갈 수 있도록 말이예요~ㅎ #include #include #include typedef struct linked_list { int data; linked_list *prev; linked_list *next; //새로나온 아이 (구조체 머리) }link; int main(void) { int data_box[]={5,6,4,7,3,8,2,9,1,0,10}; int length=sizeof data_box/ sizeof data_box[0]; int num..
2010. 6. 1.
C - 알고리즘 - 퀵정렬(라이브러리)
라이브러리함수를 쓰는게 더 이해가 안가는 부분이 있다구요ㅠ #include #include //qsort를 사용 #include //strcmp int partition(const void* num1, const void* num2) { return strcmp( (char*)num1, (char*)num2); } int main(void) { int data_box[]={5,6,4,7,3,8,2,9,1,0,10}; int length= sizeof data_box/ sizeof data_box[0]; for(int i=0; i
2010. 5. 29.
C - 알고리즘 - 퀵정렬
아휴, 이게 며칠동안 왜 이리 이해가 되지 않았을까요ㅎ #include #define SWAP(x,y,t) (t=x), (x=y), (y=t); //스왑을 간단하게 void partition(int data[],int length){ int temp=NULL; int head=-1; int tail=length-1; int pivot=data[tail]; //끝자락의 아무 아이가 합격선이 되겠네요.. 좋은 방법은 아니라지만 전 쉬워서 좋아요 :D if(length=tail) break; //머리가 추월시 끝냄 SWAP(data[head],data[tail],temp); } SWAP(data[length-1],data[head],temp); //마지막에는 기준을 가운데 쏙 넣어줌 partition(data..
2010. 5. 22.