0
我需要寫一個比較函數用於qsort
與指針成員結構。比方說,我有比較結構與指針成員
struct foo2_struct
{
int a;
}
struct foo1_struct
{
int a;
struct foo2_struct *b;
}
這是我有:
int cmp_foo1(const void *a, const void *b)
{
struct foo1_struct foo1a = *((struct foo1_struct) a);
struct foo1_struct foo1b = *((struct foo1_struct) b);
int cmp = foo1a.a - foo1b.a;
if (cmp == 0)
{
if (foo1a.b == foo1b.b)
return 0;
//how to continue???
}
return cmp;
}
注意foo2_struct
成員b
不是唯一的,因爲在這種類型的兩個不同的變量可以有b
相同的值。
比較它們指向的foo2_struct的'int a'成員(而不是指針本身的值,我認爲當'cmp'爲零時,你只返回'ab-> a - bb-> a'。 – TripeHound
您正在複製結構。我敢打賭這沒有必要。將其改爲指針操作應該會更好。 – HuStmpHrrr
當你說_how要繼續??? _你可以決定排序'a'或'b'值最相關的東西!請想想你想要的順序,給我們一個例子。 –