1

セットの作成、セットへの要素の追加など、さまざまなセット操作を提供する一連の関数を実装する必要があります。プログラミングは初めてですが、関数の書き方は知っていますが、このタスクの問題は、ポインターを使用します。たとえば、ポインターを使用してセットを作成する関数を作成する方法がわかりません。私は解決策を求めているのではなく、始めるための良い説明です! ありがとう

4

2 に答える 2

1

まず、ポインターを保持するための構造が必要です。これは、配列 (または Tarik が提案したリンクされたリスト) のように単純なものにすることができます。

構造ができたら、set 関数を作成します。

例えば

void createSet(int*** set, int maxsize)
{
  *set = malloc(sizeof(int*) * maxsize); 
}

void addPtrToSet(int** set, void* ptr, int* numberOfPointers)
{
  // check if pointer is already in array
  int i;
  for (i = 0; i < *numberOfPointers; ++i)
  {
    if (ptr == set[i]) return; // already in set
  }
  set[(*numberOfPointers)++] = ptr;
}

...

const int maxsize = 10;
int** set = 0;
int a;
char* b;
int numberOfPointers = 0;
createSet(&set, maxsize);
addPtrToSet(set, &a, &numberOfPointers);
addPtrToSet(set, &b, &numberOfPointers);
addPtrToSet(set, &a, &numberOfPointers); // will not be added to set

ここで仮定sizeof(int*) == sizeof(char*)

于 2013-10-18T13:45:14.950 に答える
1

セットは、リンクされたリストなどのさまざまなデータ構造に格納できますが、これに限定されません。次に、セット操作を抽象化して、要素のメンバーシップを追加、削除、テストする必要があります。この小さなプロジェクトに着手する前に、データ構造関連の文献を読み、関連する演習を行うことをお勧めします。

于 2013-10-18T12:33:32.760 に答える