0

私は立ち往生しています。strcmp選択ソートを使用して、構造体を文字列ごとにアルファベット順に並べようとしています。問題は、ポインターのみを使用してインデックスを使用せずに構造体の内部にある文字列で選択ソートを行う方法がわからないことです。

私の構造体は次のようになります:

struct customer
{
char  customer_name[MAX_NAME_LENGTH];  /* Last name of customer    */
float amount_owed;                     /* Amount customer owes     */
int   priority;                        /* Priority of customer     */
};

そして私の関数呼び出し:

sort_customers(quantity, p_customer_records);

と定義:

/**********************************************************************/
/*                     Sort the customer database                     */
/**********************************************************************/
void sort_customers(int quantity, struct customer *p_customer_start)
{
struct customer *p_customer,
                     *p_outer,
                     *p_inner,
                     temp_customer;

for(p_customer = p_customer_start;
    (p_customer-p_customer_start) < quantity; p_customer++)
{
    p_inner = p_customer;

    for(p_outer = p_inner + 1;
        (p_outer-p_inner) <= quantity; p_outer++)
        if(strcmp(p_inner->customer_name, p_outer->customer_name) < 0)
            p_inner = p_outer;

    temp_customer = *p_customer;
    *p_customer   = *p_inner;
    *p_inner      = temp_customer;

    p_inner++;
}
return;
}

正直なところ、これを行う方法がわかりません。インターネットや私の本でこれを助けるものを見つけることができませんでした。現在、この関数は名前を後方にソートします。簡単なことだと確信しています。何かが足りないだけです。別の目が役立つと思います。うまくいけば、何が起こっているのかを誰でも理解できるように、すべてが説明的です。

4

1 に答える 1