我需要创建一个哈希表,该数组中的每个单元格都必须是一个链表,以防发生冲突,用户可以添加char或int类型的值,
Object* createObject(void* data)
{
if (data != NULL)
{
Object* object = (Object*)malloc(sizeof(Object));
if (object == NULL)
return NULL;
object->data = data;
object->next = NULL;
return object;
}
}
我还有一个函数,它添加void *,然后创建一个struct object对象,并将其插入到列表中,问题是,当我打印表时,它会打印地址并将地址添加到列表中
int add(Table* table, void* data)
{
int d = 1;
int key = 0;
int index = 0;
if (table == NULL || data == NULL)
return -1;
//Object*obj_data=createObject(data);
if (table->Table_tybe == 0)
{
key = intHashFun((int*)data, table->size);//it returns the hash function int value
}
else
key = strHashFun((char*)data, table->size);
index = key*d;
Object*tmp = table->arr[index];
Object*obj = tmp;
while (tmp != NULL)
{
obj = tmp;
tmp = tmp->next;
}
if (obj == NULL) {
table->arr[index] = createObject(data);
printf("**%d** ", table->arr[index]->data);
table->arr[index]->next = NULL;
}
else
{
int j = 0;
if (obj->next == NULL)
{
//tmp->next=createObject(data);
obj->next = createObject(data);
obj = obj->next;
obj->next = NULL;
return;
}
这是结构
typedef struct Object {
void* data;
struct Object* next;
}Object;
typedef struct Table {
Object** arr;
int size;
int Table_tybe;
int Table_length;//list length
}Table;
int size = 3;
int listlength = 5;
Table* table = createTable(size, 0, listlength);
int one = 1;
add(table, &one);
答案 0 :(得分:0)
在您的示例代码中
File[] listOfFiles = folder.listFiles();
if(listOfFiles != null){
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
UserProfileDTO userProfileDTO = (UserProfileDTO) authentication.getPrincipal();
String username = userProfileDTO.getUsername();
if(listOfFiles[i].getName().contains(username)){
listOfFiles[i].delete();
}
}
}
}
您通过函数int one = 1;
add(table, &one);
将int
变量one
的地址传递给add()
,该地址分配了createObject()
结构并将指针复制到对象的{ {1}}字段,因此预计您的对象包含该地址。
如果要查看样本变量Object
的值,则必须将data
指针强制转换为正确的数据类型(在这种情况下为one
),然后取消引用要打印时的指针。
void*
另一种选择是更改int *
以实际存储printf("**%d** ", *(int*)table->arr[index]->data );
而不是Object
的值,并在将实际数据复制到对象时取消引用指针。
(正如其他人已经提到的那样,您的代码包含更多问题。)