Похоже, вы пытаетесь представить список как объект заголовка (начало), за которым следуют фактические элементы списка.Это хорошая идея, поскольку она упрощает случай с пустым списком, но у вас нет правильной реализации.
Когда вы добавляете, вам нужно удалить код специального случая, который вы получили для запуска last_entry.,Начальный узел никогда не будет содержать символьные данные.
Когда вы ищете, вы должны убедиться, что пропускаете заголовок (начало), поскольку он не содержит символьных данных.Вторая ошибка в вашем коде поиска состоит в том, что вы прекращаете поиск, когда p-> next равно NULL (что означает, что вы никогда не сможете вернуть последний элемент в вашем списке.) Вы должны остановиться, когда p равно NULL.
Конечновам вообще не следует использовать связанный список: хеш-таблица была бы лучшим выбором, поскольку у нее лучшая производительность и эффективность использования памяти.