C - 按字母顺序打印列表中的某些单词



我正在浏览一个单词列表,如果一个单词符合某些标准,它将被打印到屏幕上。棘手的一点是单词打印到屏幕上的顺序是按字母顺序排列的。最好的方法是什么?我想首先对列表进行排序效率低下,所以我会选择一个链接列表,但遗憾的是 c 没有一个:(

最好的方法是在打印单词之前对单词进行排序。C 提供了一个排序函数,称为 qsort() 。它适用于数组,需要传递一个比较函数。下面是使用 qsort()int数组进行排序的示例。

static int cmp_int (const void *a, const void *b);
//...
    int arr[] = { 2, 4, 6, 1, 3, 5 };
    qsort(arr, sizeof(arr)/sizeof(*arr), sizeof(*arr), cmp_int);

正确实现cmp_int()的诀窍是意识到比较函数接收的类型与&arr[0]的类型相同。由于arr是一个int数组,这意味着cmp_int()将接收int *类型。如果第一个参数小于第二个参数,则此函数应返回负值,如果第一个参数大于第二个参数,则返回正值,否则返回 0。

static int cmp_int (const void *a, const void *b) {
    const int *aa = a;
    const int *bb = b;
    return (*aa > *bb) - (*aa < *bb);
}

相关内容

  • 没有找到相关文章

最新更新