У меня есть следующее требование:
Создание функций линейного списка:
Эта формулировка уже странна для C ++. В C ++ несколько функций, которые работают с одними и теми же данными, обычно группируются в класс.
CreateList, AddNode, DeleteNode, SearchNode и DeleteList,
- У класса есть имя, в данном случае
List
или LinkedList
.
- Поскольку функции определены внутри класса, их имена не должны содержать слово
List
, так как это будет избыточно.
- Имена функций также не должны содержать слово
Node
, так как это деталь реализации, о которой вызывающая сторона этих функций не должна беспокоиться.
- Функция
CreateList
должна быть конструктором класса. Конструкторы не имеют имени.
- Функция
DeleteList
должна быть деструктором класса. У деструкторов нет имени.
для списка, содержащего длинные целые числа со знаком.
При разработке типа данных в начале проще работать с одним конкретным типом данных. Позже этот тип данных обычно заменяется заполнителем, так что этот список можно использовать с любым типом, что делает его шаблоном класса. Для целей этого упражнения ваш учитель, скорее всего, подразумевает один тип long int
(который неявно подписан). Если вы хотите, вы также можете написать signed long int
, что эквивалентно.
под «линейным списком» подразумевается односвязный или двойной связанный список?
Мы не можем вам сказать. Об этом вы должны спросить своего учителя.
В идиоматическом C ++ базовая структура определения типа выглядела бы так, я не учел детали реализации:
class LongIntList {
public:
LongIntList(); // This is the constructor
~LongIntList(); // The ~ marks this as the destructor
void Add(long int element);
void Delete(long int element);
bool Search(long int element);
}
В стандартной библиотеке C ++ функция Search
выглядит немного иначе (она возвращает итератор вместо только логического значения), но для новичка логическое значение достаточно хорошо. Итераторы будут изучены позже.
Таким образом, ваши текущие инструкции заставят вас писать код с простой структурой, которая удобна для обучения. Но имейте в виду, что полученный код не считается хорошим кодом C ++. После введения необходимых понятий ваш учитель, надеюсь, позволит вам позже преобразовать текущий код в хороший C ++ Если этого не произойдет в ближайшие месяцы, вы можете опубликовать свой текущий код (который должен работать как задумано) по адресу https://codereview.stackexchange.com/, чтобы опытные программисты на C ++ могли сказать вам, как он должен выглядеть и почему.