📄 listops.c
字号:
#include <stdio.h>#include "listops.h"/*---------------------------------------------------------------------- Functions----------------------------------------------------------------------*/void* l_sort (void *list, LCMPFN cmpfn, void *data){ LE *src, *dst; LE **end; LE *in1, *in2; LE **out; if (!list) return list; for (src = list; src->succ; ) { dst = src; src = src->succ; dst->succ = NULL; } while (src->pred) { end = &dst; do { out = end; in1 = src; in2 = src->pred; if (!in2) { *end = in1; end = &in1->pred; break; } src = in2->pred; while (1) { if (cmpfn(in1, in2, data) < 0) { *out = in1; out = &(in1->succ); in1 = in1->succ; if (!in1) break; } else { *out = in2; out = &(in2->succ); in2 = in2->succ; if (!in2) break; } } if (in1) *out = in1; else *out = in2; end = &(*end)->pred; } while (src); *end = NULL; src = dst; } for (src->pred = NULL; src->succ; src = src->succ) src->succ->pred = src; return dst; } /*--------------------------------------------------------------------*/void* l_reverse (void *list){ LE *le = NULL; while (list) { le = list; list = le->succ; le->succ = le->pred; le->pred = list; } return le; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -