有符号长整数的含义

时间:2019-04-14 01:15:04

标签: c++ algorithm data-structures

我有以下要求:

创建线性列表函数:CreateList,AddNode,DeleteNode,SearchNode和DeleteList,用于包含有符号长整数的列表。

我对这里的2个术语感到困惑 有符号长整数的含义在这里的意思是:

“任何包含0的正或负的长整数”?

我想念东西吗?

和第二个

“线性列表”是指单链表还是双链表?

谢谢

3 个答案:

答案 0 :(得分:3)

  

我有以下要求:

     

创建线性列表函数:

对于C ++,这种措辞已经很奇怪了。在C ++中,对相同数据起作用的几个函数通常被分组为一个类。

  

CreateList,AddNode,DeleteNode,SearchNode和DeleteList,

  • 类具有名称,在这种情况下为ListLinkedList
  • 由于这些函数是在类内部定义的,因此它们的名称不需要包含单词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 ++程序员告诉您它的真正外观以及原因。

答案 1 :(得分:0)

“有符号”整数是带有“符号”位的整数,指示它是负值还是正值。

一个“长”整数,可能长于一个int,具体取决于体系结构。在32位上,long至少是32位,并且与int大小相同;在64位系统上,long是64位。

您无需指定'signed',因为它是默认值,只需将变量声明为long即可使其成为带符号的long变量。另一方面,如果您只想要一个正值,则需要将其指定为unsigned long

对于有符号整数,最大值是无符号整数的1/2,因为它是从中间分解的。例如,一个16位无符号整数的范围是0到65535,但是一个有符号16位整数的范围是-32768到32767。

线性列表就是这样的,它是线性顺序的列表,它没有指定创建方式,但是由于函数使用术语“节点”,因此我假设链接列表会更符合范式。请参阅std::list,因为这很可能适合您的工作。

答案 2 :(得分:0)

这是教学术语,这是翻译:

  • 线性列表-非圆形列表(最后一个节点未链接到第一个节点)。可以单链接或双链接。如果未指定,则老师通常会单单想要,但是您应该问。
  • 有符号长整数- long 类型。有符号整数包括负数(int,long等)。无符号整数只有正数(无符号int,无符号long等)。