C/C++の宿題を片付けます 102代目
■ このスレッドは過去ログ倉庫に格納されています
0384デフォルトの名無しさん
2008/01/09(水) 09:09:30[2] 降順のマージソートを作れ。
[3.1] mac os [3.2] gcc [3.3] C [4] 期限: 1月10日
[5] 単純な問題だろうと思うのですがつまづきまくりです。。お願いします。。。演算子<=を変えるだけではだめですよね。
昇順のマージソート↓
WORD *merge_sort(WORD* x) {
WORD *a, *b, *y;
if(x == NULL || x->next == NULL) return x;
a = x; b = x->next;
if(b != NULL) b = b->next;
while(b != NULL) {
a = a->next; b = b->next;
if(b != NULL) b = b->next;
}
y = a->next; a->next = NULL;
return merge(merge_sort(x), merge_sort(y));
}
WORD *merge(WORD* x, WORD* y) {
WORD z, *p; p = &z;
while(x != NULL && y != NULL) {
if(x->count <= y->count) {
p->next = x; p = x; x = x->next;
} else{
p->next = y; p = y; y = y->next; }}
if(x == NULL) p->next = y;
else p->next = x;
return z.next; }
■ このスレッドは過去ログ倉庫に格納されています