EmissonList对象是具有特定信息的节目列表。我寻找的问题是插入函数。
class EmissionList {
private:
Emission *head=NULL;
public:
void insert(Emission *aNode);
Emission *getHead() {
return head;
};
void putHead(Emission *newHead) {
head=newHead;
head->next = NULL;
}
void printEmissions();
};
void EmissionList::insert(Emission *aNode) {
Emission *ptr=getHead();
if (head == NULL){
putHead(aNode);
}else{
while(ptr!= NULL){
ptr = ptr->next;
}
ptr = aNode;
ptr->next=NULL;
}}
我想添加到列表中但遇到问题。
答案 0 :(得分:0)
在你的代码中设置ptr = aNode ptr不是' next'最后一个元素,所以原始列表不变
我建议你std :: list或者至少
for (Emission **iter = &head ; *iter != NULL ; )
iter = &((*iter)->next) ;
*iter = aNode ;
这是迄今为止我发现的最简单的插入(最后)。
答案 1 :(得分:0)
首先,EmissionList类的设计很糟糕。
然而,可以通过以下方式定义函数
void EmissionList::insert( Emission *aNode )
{
Emission *current = getHead();
if ( current == NULL )
{
putHead( aNode );
}
else
{
while ( current->next ) current = current->next;
aNode->next = current->next;
current->next = aNode;
}
}