在删除其中的一个元素时获取分段错误

时间:2012-12-23 19:13:42

标签: c++ linked-list

这是一个代码,可以删除一个演员阵容中的一个演员。我在电影和他们的演员之间建立联系。所以这段代码检查电影是否存在,然后它看起来是Cast,当它找到我们正在寻找的actor时,它会删除它。 但是,虽然这段代码对我来说似乎很合理,但我遇到了分段错误。 可能是什么原因,在这种情况下我们应该注意不要陷入错误?

2 个答案:

答案 0 :(得分:1)

if( c-> next ->  name == actorFirstName && c -> next -> lastName == actorLastName)

你假设c-> next不是NULL但你的循环只确保c不是NULL。

答案 1 :(得分:0)

就像DrC所说的那样," next"是错的。试试这个:

    void MovieDatabase:: removeActor( const string movieTitle, const string actorFirstName, const string actorLastName )
{
        for(Movie* m= headMovie; m != NULL;  m = m-> next){
               if(m-> title == movieTitle && m -> headCast !=NULL){
                        for(Cast* c = m -> headCast; c != NULL; c= c-> next){
                                if( c ->  name == actorFirstName && c -> lastName == actorLastName){
                                        Cast* temp = c-> next;
                                        delete c;
                                        c = temp;


                           }
                    }
            }
    }

}