Я работаю над назначением школы, и у меня возникли проблемы с пониманием того, как использовать ADT. В принципе, мне нужно реализовать таблицу символов ADT, в которой хранятся пары <key, value>
. Значение, связанное с ключом, представляет собой произвольный объект, определенный пользователем, который передается ADT указателем void. У меня уже есть файл заголовка, мне просто нужно сделать для него исходный файл.C - Нужна помощь в реализации ADT
Декларация, на которую я застрял, относится к самой структуре. Это объект таблицы символов, указатель которого имеет указатель типа SymTable_T
. Он должен иметь возможность вставлять в него копии вставленных пар <key, value>
, и эти копии должны быть уничтожены при удалении из таблицы или когда сама таблица уничтожена.
Реализация должна использовать хеш-таблицу, которая использует цепочку для разрешения конфликтов. Я уже знаком с хешированием, поэтому проблем там нет.
Это то, что я придумал:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "symTable.h"
#define DEFAULT_TABLE_SIZE 61
#define HASH_MULTIPLIER 65599
typedef struct SymTable *SymTable_T;
{
char *key;
int value;
struct SymTable *next; //linked list
};
Может кто-то мне точку в правильном направлении? Может ли кто-нибудь объяснить мне суть внедрения ADT? Огромное спасибо заранее!
Благодарим вас за разъяснение! Я уже был знаком с файлами заголовка/исходного кода, но вы немного разъяснили мне. Можете ли вы прокомментировать мою структуру или, возможно, сломать оператор 'typedef struct SymTable * SymTable_T'? Я знаю, что 'struct SymTable' является самой структурой, но на что указывает указатель? –