链接列表插入

时间:2015-06-13 12:12:25

标签: c++ linked-list

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;
}}

我想添加到列表中但遇到问题。

2 个答案:

答案 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;
    }
}