Cのポインタを使用した構造体のバブルソート

yerassyl

バブルソートアルゴリズムとCのポインターを使用して、構造体の配列をソートしたいと思います。車の構造体があります。

typedef struct{
    char model[30];
    int hp;
    int price;
}cars;

そして私は12項目にメモリを割り当てます:

cars *pointer = (cars*)malloc(12*sizeof(cars));

ファイルからデータを読み取ります。

for (i = 0; i <number ; i++) {
    fscanf(file, "%s %i %i\n", (pointer+i)->model, &(pointer+i)->hp, &(pointer+i)->price);
}

私はポインタを渡しptrbubbleSort機能:

bubbleSort(pointer, number);

これが私のbubbleSort機能です:

void bubbleSort(cars *x, int size) {
    int i, j;
    for (i=0;i<size-1;i++) {
    int swapped = 0;
    for (j = 0; j < size - 1 - i; j++) {
        if ( (x+i)->hp > (x+j+1)->hp ) {
            cars *temp = (x+j+1);
            x[j+1] = x[j];
            x[j] = *temp;
            swapped = 1;
        }
    }
        if (!swapped) {
        //return;
        }
    }
}

問題は、ポインタを使用してアイテムを交換する方法がわからないことです。

VolAnd

ソート機能については、次の解決策を検討してください。

void bubbleSort(cars *x, int size) 
{
    int i, j;
    for (i = 0; i < size-1; i++) 
    {
        for (j = 0; j < size-1-i; j++) 
        {
            if ( x[j].hp > x[j+1].hp ) 
            {
               cars temp = x[j+1];
               x[j+1] = x[j];
               x[j] = temp;
            }
        }
    }
}

問題はデータスワップ部分にありました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

qsortを使用した構造体ポインターの配列のソート

分類Dev

ポインタを使用した構造体のメンバーの初期化(C)

分類Dev

構造体へのポインタを使用して構造体メンバーをループする場合

分類Dev

構造体を使用したCのポインタ

分類Dev

ダブルポインタを使用して構造体のメンバーに値を割り当てます

分類Dev

構造体フィールドでのポインタを使用した違い

分類Dev

型構造体の構造体のメンバーをダブルポインタにする

分類Dev

Swiftはcで定義された構造体のダブルポインターを定義します

分類Dev

プライベートモジュールタイプを使用した構造体メンバーの定義

分類Dev

ポインタを使用して多くの構造体をポイントし、構造体データメンバーにアクセスする

分類Dev

構造体のポインタの配列を使用したbsearch

分類Dev

構造体のポインタの配列を使用したbsearch

分類Dev

親構造体へのポインタを使用した構造体:最良のアプローチ

分類Dev

インポートされた構造体の構造体フィールドタグを上書きする

分類Dev

レシーバーとしての構造体へのポインターを使用したメソッド式の呼び出し

分類Dev

ポインターレシーバーを使用した非構造体の値の変更

分類Dev

ポインタを使用した構造体の定義

分類Dev

関数ポインタを使用した構造体の初期化

分類Dev

構造体の行列(ダブルポインタ)メンバーを初期化します

分類Dev

Cでの構造体ポインタを使用した配列割り当て

分類Dev

ポインタを使用した構造体のシリアル化

分類Dev

配列を使用したCのポインターを持つ構造体の使用

分類Dev

C / C ++ POD構造体へのポインターは、最初の構造体メンバーも指します

分類Dev

ソケット上のデータ配列を使用したC構造体

分類Dev

構造体メンバーポインタを使用して、C ++で構造体を入力します

分類Dev

malloc-expressionの予期されるエラーCを使用した構造体へのポインター

分類Dev

C#のC / C ++ DLLでネストされた構造体ポインターを使用する

分類Dev

ポインターとオフセットを使用して構造体のメンバーのベクトルを反復処理するパート2

分類Dev

Boost Spirit Qi:タプルのベクトルを使用した構造体へのバインド

Related 関連記事

  1. 1

    qsortを使用した構造体ポインターの配列のソート

  2. 2

    ポインタを使用した構造体のメンバーの初期化(C)

  3. 3

    構造体へのポインタを使用して構造体メンバーをループする場合

  4. 4

    構造体を使用したCのポインタ

  5. 5

    ダブルポインタを使用して構造体のメンバーに値を割り当てます

  6. 6

    構造体フィールドでのポインタを使用した違い

  7. 7

    型構造体の構造体のメンバーをダブルポインタにする

  8. 8

    Swiftはcで定義された構造体のダブルポインターを定義します

  9. 9

    プライベートモジュールタイプを使用した構造体メンバーの定義

  10. 10

    ポインタを使用して多くの構造体をポイントし、構造体データメンバーにアクセスする

  11. 11

    構造体のポインタの配列を使用したbsearch

  12. 12

    構造体のポインタの配列を使用したbsearch

  13. 13

    親構造体へのポインタを使用した構造体:最良のアプローチ

  14. 14

    インポートされた構造体の構造体フィールドタグを上書きする

  15. 15

    レシーバーとしての構造体へのポインターを使用したメソッド式の呼び出し

  16. 16

    ポインターレシーバーを使用した非構造体の値の変更

  17. 17

    ポインタを使用した構造体の定義

  18. 18

    関数ポインタを使用した構造体の初期化

  19. 19

    構造体の行列(ダブルポインタ)メンバーを初期化します

  20. 20

    Cでの構造体ポインタを使用した配列割り当て

  21. 21

    ポインタを使用した構造体のシリアル化

  22. 22

    配列を使用したCのポインターを持つ構造体の使用

  23. 23

    C / C ++ POD構造体へのポインターは、最初の構造体メンバーも指します

  24. 24

    ソケット上のデータ配列を使用したC構造体

  25. 25

    構造体メンバーポインタを使用して、C ++で構造体を入力します

  26. 26

    malloc-expressionの予期されるエラーCを使用した構造体へのポインター

  27. 27

    C#のC / C ++ DLLでネストされた構造体ポインターを使用する

  28. 28

    ポインターとオフセットを使用して構造体のメンバーのベクトルを反復処理するパート2

  29. 29

    Boost Spirit Qi:タプルのベクトルを使用した構造体へのバインド

ホットタグ

アーカイブ