我获得了一个具有Node
内部类的列表类。这是内部阶级:
class Node
{
public:
/**
* The constructor
* @param data the data to be stored in this node
*/
explicit Node( const Object& data )
: data( data ), next( NULL ) {}
Object data;
Node * next;
};
我们被告知编写一个push_front
方法,将元素推送到列表的前面。我在提出正确的方法时遇到了一些麻烦。 list
类有3个私有属性:uint size
,Node * first
和Node * last
我认为push_front
应该工作的方式是:如果列表当前为空(即size = 0
),那么我们试图推送的任何对象应该成为该列表中的最后一个元素。我们尝试推送的任何其他元素将成为第一个并指向下一个节点。
void push_front( const Object& item )
{
Node * new_node = new Node( item );
if ( size == 0 )
{
new_node = last;
}
else
{
Node * temp = first;
first->data = new_node;
first->next = temp;
}
我无法帮助,但觉得这不是正确的方法。任何人都可以指出我正确的方向或建议我如何以正确的方式做到这一点?谢谢。 }
答案 0 :(得分:2)
您所要做的就是:
size == 0
使 first
和last
都指向新节点,否则将当前first
指定给{{1}并使new_node->next
指向first
指向new_node
您的代码在size
停止有意义(您刚刚泄漏了内存,不关心new_node = last;
?),还有类型不匹配的原因:
first
答案 1 :(得分:2)
行
<ion-view style="" title="iframe">
<ion-content class="has-header" overflow-scroll="true" padding="true">
<div style="" class="list card">
<div class="item item-divider-android">iframe content</div>
<div class="item item-body-android">
<div style="">
<center>
<iframe src='{{trustSrc(iframe.src)}}' frameborder="0" width="100%" height="500" scrolling="yes"></iframe></center>
</div>
</div>
</div>
</ion-content>
显然有问题。你已经分配了一个对象,但是如果列表是空的,你就把它丢弃了。它没有多大意义。
你也没有在任何地方更新Node * new_node = new Node( item );
if ( size == 0 )
{
new_node = last;
}
,所以这也是一个问题。
您可能需要以下内容:
size