listops.c

来自「Data Minig中的FP GROWTH 算法,附带test实例及实验数据分析」· C语言 代码 · 共 72 行

C
72
字号
#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 + =
减小字号Ctrl + -
显示快捷键?