Значение подписанного длинного целого - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть следующее требование:

Создание функций линейного списка: CreateList, AddNode, DeleteNode, SearchNode и DeleteList для списка, содержащего длинные целые числа со знаком.

Я запутался в 2Терминологии здесь означают ли здесь значения длинных целых чисел со знаком:

"любое длинное целое число, которое является положительным или отрицательным, включая 0"?

я что-то упустил?

и 2-й

под "линейным списком" подразумевается ли список с одинарной или двойной связью?

спасибо

Ответы [ 3 ]

3 голосов
/ 14 апреля 2019

У меня есть следующее требование:

Создание функций линейного списка:

Эта формулировка уже странна для 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 ++ могли сказать вам, как он должен выглядеть и почему.

0 голосов
/ 14 апреля 2019

Это преподавание терминологии, вот перевод:

  • Линейный список - список, который не является круговым (последний узел не связан с первым узлом). Может быть одинарным или двойным. Если не указано иное, учитель обычно хочет один, но вы должны спросить.
  • целые числа со знаком - тип long . Целые числа со знаком включают отрицательные числа (int, long и т. Д.). Целые числа без знака имеют только положительные числа (целое число без знака, длинное число без знака и т. Д.).
0 голосов
/ 14 апреля 2019

Целое число со знаком - это целое число со знаком «бит», указывающее, является ли оно отрицательным или положительным значением.

Длинное целое число, которое может быть длиннее целого в зависимости от архитектуры. В 32-битном long это как минимум 32-битный и тот же размер, что и в int, в 64-битной системе long - 64-битный.

Вам не нужно указывать 'sign', так как это значение по умолчанию, просто объявление переменной как long сделает ее длинной переменной со знаком. С другой стороны, если вы хотите получить только положительное значение, вы должны указать его как unsigned long.

Для целого числа со знаком максимум составляет 1/2 от максимума без знака, поскольку он разбит на середину. Например, диапазон 16-разрядного целого числа без знака составляет от 0 до 65535, а диапазон 16-разрядного целого числа со знаком составляет от -32768 до 32767.

Линейный список - это именно тот список, который находится в линейном порядке, он не определяет, как вы его создаете, однако, поскольку функции используют терминологию «Узел», я бы предположил, что Связанный список будет подходить парадигме более правильно. Смотрите std::list, так как это, вероятно, подойдет для того, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...