列表L合并到self 我目前正在处理我的C++程序,它与链表一起工作,我完全不知道“列表L和自己合并”是什么意思。我以前对链表很了解,从来没有将链表合并到自己的链表中
这是我的格式列表L合并到self 我目前正在处理我的C++程序,它与链表一起工作,我完全不知道“列表L和自己合并”是什么意思。我以前对链表很了解,从来没有将链表合并到自己的链表中,c++,C++,这是我的格式 // pre: none // post: list l is merged to self. void LinkedList :: merge(const LinkedList& l){ Node * lstCpy = NULL; Node * head = NULL; // copy list1 into lstCpy Node * cur = l; while (cur != NULL) { if
// pre: none
// post: list l is merged to self.
void LinkedList :: merge(const LinkedList& l){
Node * lstCpy = NULL;
Node * head = NULL;
// copy list1 into lstCpy
Node * cur = l;
while (cur != NULL) {
if (head == NULL) {
lstCpy = new Node;
head = lstCpy;
}
lstCpy->next = new Node;
lstCpy = lstCpy->next;
cur = cur->next;
}
}
我不知道您的实际任务是什么,但是使用给定的预定义签名实现
merge()
函数将意味着您检查列表是否应该与其自身合并(在这种情况下不执行任何操作)
在对当前实例执行任何(不必要的)操作之前,检查
if(this!=&rhs)
的上述条件模式被广泛使用,例如用于执行分配操作
LinkedList& LinkedList:operator=(const LinkedList& rhs) {
if(this != &rhs) {
// assign individual class member values from rhs
}
return *this;
}
检查此条件的关键是,避免任何不必要的操作,这些操作会使当前实例保持相同的状态
将列表与自身合并不需要任何操作,因为该操作非常简单。因此,您只需在第一位检查不在同一实例上操作,就可以跳过这种不必要的操作
post条件并不意味着将
列表1
合并到self,其中self表示您当前的类实例(this
)。关于不将同一实例合并到自身的规则仍然适用。“我完全不知道“列表L与自身合并”是什么意思。”“老实说,我也不知道。这是我的post条件。”。。就像她期望的那样,类似于将一个列表与自身合并(检查this===&l
)应该会导致NOP,而其他l
实际上应该执行合并。是的,我很难理解,我很确定它应该是“listl
与this
合并”我在上面尝试过,但我相信这是毫无意义的ever@ProgrammerCrazy你为什么认为这毫无意义?对于这类函数,这样做是常见的做法(赋值运算符实现的标准模式类似)。
LinkedList& LinkedList:operator=(const LinkedList& rhs) {
if(this != &rhs) {
// assign individual class member values from rhs
}
return *this;
}
// post: list l is merged to self.