首页 > 解决方案 > 哈希表的链表数组

问题描述

我想知道带 10 个名称的文本文件并阅读它。10个名字按降序排序,用除法形成哈希表。我需要构建它们的链表。哈希表的索引是数字 7。

我已经尝试过匹配指针变量并制作了一个哈希表,但我不能这样做。我在制作哈希表、插入数据、打印哈希表和搜索数据(输入名称时查找的函数。)时遇到了麻烦。我需要添加更多功能..我是怎么做到的?

#define SIZE 7


struct node {
   char data[100][20];
   struct node* next; 
}; 

struct index {
   struct node* head; 
   int count; 
};



struct sum (data){ 
   struct node* ptr;

   int sum,i;
   for (i=0; i<20; i++) {
    ptr -> data[i] = ptr;
    strcpy(sum,ptr);
   }

  return sum;   
};


int hashFunction (int sum) { 

    return sum%SIZE; 
}



void descend (data) { 

    int temp;
    for(i=0;i<100;i++) {
       for(j=0;j=20;j++) {
         if (data[i][j+1]>data[i][j])
            temp=data[i][j];
            data[i][j]=data[i][j+1];
            data[i][j+1]=temp;
         }
    }   
}



int main (void) {

    char data[100][20];
    FILE *fp;
    fp = fopen("data.txt","r");
    for (int i=0; i<20; i++)
        fscanf (fp,"%s",&data);
        printf("%s\n",data);
    }
    fclose(fp);
    hashTable = (struct index*)malloc(SIZE*sizeof(struct index));
    descend(data);
    return 0;
}

标签: c

解决方案


首先,看起来您应该声明char data[20][100]而不是char data[100][20].

然后,在 20 次迭代的循环中,您应该参考data[i]而不是data

for (int i=0; i<20; i++)
    fscanf(fp,"%s",data[i]);
    printf("%s\n",data[i]);
}

请记住,您假设输入文件中的每一行最多 99 个字符。

这并不能回答我认为的实际问题,但是您至少应该解决上述所有问题。


推荐阅读