使用指针设置操作

时间:2013-10-18 12:27:42

标签: c pointers set operations

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

E.g。

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*)