我正在开发一个c程序。我正在使用这个结构:
main.h:
#define LONG_CADENA 22
#define NUM_CADENAS 5
#define formato "%22s%22s%22s%22s%22s\n"
#define indi_format "%22s"
typedef struct Agenda
{
char* nom[NUM_CADENAS];
struct Agenda* ant;
struct Agenda* sig;
} ag;
我有这个功能来显示对象议程:
#include <stdio.h>
#include "main.h"
ag* mostrarAgenda(ag* act)
{
unsigned i = 0;
void* ini;
ini = act;
while (act++->sig) //ma1: Reescribir esta línea utilizando el bucle for
{
for (; i<NUM_CADENAS; i++)
{
printf(indi_format, act->nom[i]);
}
}
printf("\n");
getchar();
return ini;
}
我需要更改此函数以通过其中一个元素对结构进行排序,例如通过ag-&gt; nom [0]。但我从C开始,我不知道如何做到这一点
有人可以帮助我吗?
答案 0 :(得分:0)
你可以冒泡它:
int c;
do {
c=0;
while(iterator->sig){
if ( compare(iterator,iterator->sig) > 0 ) {
swap(iterator,iterator->sig);
c++;
}
iterator=iterator->sig;
}
} while (c);
您只需要实现比较功能和交换功能。
这里迭代器最初是指向列表第一个元素的指针。你有责任找到它。
另外我建议在print函数中找到列表的头部开始打印,除非你确定该函数总是作为参数传递给列表的头部。