【发布时间】:2011-04-18 05:02:07
【问题描述】:
假设我们得到了函数定义
bool sameValsOrder(node *p , node *q)
我们必须编写一个函数来比较两个链表,如果它们具有相同的顺序,则返回 true 否则返回 false [77777] 和 [77] -> 正确
[1234567] 和 [1234555567] -> 真
bool sameValsOrder (node *p , node *q)
{
if ( q==NULL && p==NULL)
return true;
else if ((q=NULL && p != NULL)|| (p=NULL && q!= NULL))
return false;
else if ( q != NULL && p != NULL)
while ( q != 0 && p != 0)
{
if (p->data != q->data)
{
return false;
break;
}
else
{
p= p-> next ;
q= q-> next;
}
}
return true;
}
上面的代码是我的答案,但我意识到了一些事情。我是否需要在 while 循环中添加更多 if 语句,以便 [77777] 和 [7] 的链接列表应该返回 true,因为它的相同顺序只是更少。
【问题讨论】:
-
嵌套的
if语句的else部分缺少大括号。 -
我认为当前函数所做的只是告诉您列表是否具有相同的前 N 个数据值,其中 N 是较短列表的长度。
-
@larsmans -
if部分也是!也许是蟒蛇 -
@Brad 是的,我的问题是如何添加它,以便我可以比较不同值的长度 @larsman nice catch 我再次编辑主帖
-
@Brad:似乎 OP 只是编辑了问题而没有出现。当前的代码甚至不是格式良好的 C++。
标签: c++ linked-list compare