我试图将指向结构的指针传递给函数,然后返回所述指针的编辑版本。 这些是结构的声明:
struct HshTble;
typedef struct HshTble *HashTable;
enum EntryStatus { Occupied, Empty, Deleted };
struct HashEntry {
int Element;
enum EntryStatus Info;
};
typedef struct HashEntry Entry;
struct HshTble{
int TableSize;
Entry *Array;
};
因为你可以看到在另一个结构中有一个指向结构的指针。 我的问题在于尝试用这些东西做点什么......到目前为止我已经把我的代码放进去了,希望它能清楚地知道应该发生什么,但是我会这样做也添加笔记。
void main(){
HashTable *table;
int size;
table = (HashTable*) malloc (sizeof(HashTable));
table = createTable(table, &size);
在接下来的位置是问题已经出现的地方,我的想法是想要编辑表中的值:
HashTable createTable(HashTable table, int *size){
int x, y, ch;
*size = 0;
fopen_s(&fp, DATA_FILENAME, "r");
while (EOF != fscanf_s(fp, DATA_FILENAME, &ch))
{
y = x = f(ch);
++*size;
if (table->Array[x].Info != Occupied)
{
table->Array[x].Element = ch;
table->Array[x].Info = Occupied;
}
else if (table->Array[x].Info == Occupied)
{
while (table->Array[y].Info == Occupied)
{
if (y > HASH_TABLE_SIZE)
{
y = 0;
table->Array[y].Element = ch;
table->Array[y].Info = Occupied;
}
else
{
table->Array[y + 1].Element = ch;
table->Array[y + 1].Info = Occupied;
}
y++;
}
}
return table;
}
}
我的功能似乎并不像我的其中一种结构,但我觉得这是我目前的主要问题。任何帮助都会很棒。
答案 0 :(得分:-2)
尝试
void createTable(HashTable &table, int *size){
只需修改作为参数传递的对象即可。那你不需要回报。
对于C do
void createTable(HashTable *table, int *size){