0

に固定サイズの配列がありCます。そこには、(配列サイズよりも少ない) 有用な要素がいくらでもある可能性があります。今、私は自分の有用な要素だけが必要です。end of arrayそこで、整数配列にマーカーを使用することを考えています。初めに


a) これは可能ですか?

b) 可能であれば、どのように?

4

6 に答える 6

3

少し違うアプローチをとります

struct IntArray
{
  int data[N];
  int size; // <-- use this to keep track of the size.
}
于 2012-06-26T09:38:38.337 に答える
3

論理的には、 END_OF_ARRAY として機能する一意の整数を見つけることができ、有用な数値のセットに存在しない場合は可能です...

最後に明示的に追加する必要があります...そして、後で終了を示す番号を確認します

于 2012-06-26T09:39:57.650 に答える
2

配列の内容と有効な値によって異なります。

あなたはintの配列を持っていると言います。リストには無効な値を使用してください。すべてのエントリが正の場合は、最後に負の数を使用します。値がすべて INT_MAX 未満の場合は、それを終了マーカーとして使用します。

于 2012-06-26T09:39:28.567 に答える
1

配列を常にバッファとして扱い、現在の有用な要素の数を追跡できます。

struct buffer 
{ 
     int* array;
     size_t size;
}
于 2012-06-26T09:37:57.650 に答える
0

これを行うには 2 つの方法があります (int 値が int の任意の値を持つ可能性がある場合)。


最初のオプション:要素の数を配列に格納し、アイテムを追加/削除する場合は値を増やします。

int count;
int *array;

2 番目のオプション:配列内の次の変数へのポインターを持つ構造体を作成します。NULLリストの最後に到達した場合。

struct Item {
    int i;
    struct Item *next;
}
// pointing at the start adress:
struct Item *start = NULL;
// adding first item:
start = malloc(sizeof(struct Item));
start->i = 123;
start->next = NULL // mark the current end of list (not needed if you add a value right after the first)
// adding second item:
start->next = malloc(sizeof(struct Item));
start->next->i = 456;
start->next->next = NULL
// etc
于 2012-06-26T15:55:58.380 に答える
0

はい、という整数変数を作成しますend_of_array_marker

これよりも複雑にする必要がありますか?

于 2012-06-26T09:38:09.053 に答える