1

我需要实现一组提供各种集合操作的函数,例如创建集合、将元素添加到集合等。我是编程新手,但是,我知道如何编写函数,但我对这项任务的问题是我需要使用指针,我不知道如何编写一个函数来创建一个带有指针的集合。我不是在寻求解决方案,只是让我开始的一个很好的解释!谢谢

4

2 回答 2

1

集合可以存储在各种数据结构中,例如但不限于链表。然后,您需要抽象出集合操作以添加、删除、测试元素的成员资格。我建议你在进行这个小项目之前阅读数据结构相关的文献并做一些相关的练习。

于 2013-10-18T12:33:32.760 回答
1

首先,您需要一些结构来保存您的指针,它可以像数组(或 Tarik 建议的链表)一样简单。

一旦你有了一个结构,你就可以创建集合函数。

例如

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 回答