我有以下要求:
创建线性列表函数:CreateList,AddNode,DeleteNode,SearchNode和DeleteList,用于包含有符号长整数的列表。
我对这里的2个术语感到困惑 有符号长整数的含义在这里的意思是:
“任何包含0的正或负的长整数”?
我想念东西吗?
和第二个
“线性列表”是指单链表还是双链表?
谢谢
答案 0 :(得分:3)
我有以下要求:
创建线性列表函数:
对于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 ++程序员告诉您它的真正外观以及原因。
答案 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)
这是教学术语,这是翻译: