所以我有以下问题,我需要比较一个结构中两个字符串的第一个字母,看一个是否比另一个大。这样做的目的是在Bubblesort算法中实现,以便我可以对结构进行排序。到目前为止,我来这条线:


  if(strcmp(j->名称,j-> proximo->名称)> 0)


但是这一行会比较字符串中的所有内容,我只需要两者的第一个字母。

完整的代码如下

struct s_Especialidade{
    int id;
    char nome[60];
    char descricao[60];
    struct s_Especialidade *proximo;
};

void ordenarMedicoN(){
    PESPECIALIDADE i = malloc ( sizeof(Especialidade));
    PESPECIALIDADE j = malloc ( sizeof(Especialidade));
    PESPECIALIDADE t = malloc ( sizeof(Especialidade));
    for(i=cabecaEspecialidade; i->proximo != NULL; i=i->proximo) {
        for(j=cabecaEspecialidade; j->proximo != NULL; j=j->proximo) {
            if(strcmp(j->nome[0],j->proximo->nome[0])>0) {
                t = j;
                j = j->proximo;
                j->proximo = t;
            }
        }
    }
    main();
}

最佳答案

您的代码正在泄漏内存。

首先执行malloc(),然后为同一指针分配其他地址,这将丢失对malloc()分配的内存的引用,这永远是不对的。

另外,考虑只使用标准库中的qsort()进行排序,一旦编写了正确的比较函数,它就可以对任何数组进行排序,并且它可能比算法更快。

另外,它已经被编写和调试了。

10-06 11:02