2017-10-31 12 views
-1
//Definition of pushTop() 
void Staque::pushTop(const StaqueElement & value) 
{ 
    myTop = new Staque::Node(value, myTop); 
    count++; 
} 

//Definition of pushBottom() 
void Staque::pushBottom(const StaqueElement & value) 
{ 
    if (empty()==1) 
    { 
     myBottom=new Staque::Node(value); 
     myTop->next=myBottom; 
     count++; 
    } 

    myBottom->next = new Staque::Node(value); 
    myBottom = myBottom->next; 
    count++; 
} 

私pushTop機能が正常に動作しますが、私は奇数番号を入力しようとするたびに、私はスレッド1」スレッド1:EXC_BAD_ACCESS(コード= 1、アドレス= 0x8の)

このエラーを取得:EXC_BAD_ACCESS( "行18の" "myBottom-> next =新しいStaque :: Node(値);"

リンクリストに整数を追加しようとしています。奇数はリストの一番下に、偶数は先頭に移動します。

+0

'empty()== 1 'の場合、2つのノードを作成してカウント数を増やしているようですe。あれは正しいですか?それが空の場合は、必ず 'myTop'はどこにも向いていませんか?コードの残りの部分がないと言うのは難しいです。 – Steve

+0

エラーを複製するのに十分なコードを教えていただけますか? –

答えて

0

あなたが提供したコードの唯一の問題であるかどうかは分かりませんが、pushTop(...)メソッドでもmyBottomを設定する必要があります。これを行わないと、empty()は偽になることがありますが、pushBottom(...)を呼び出すとmyBottomは無効になります。このような

何か:私はあなたが呼び出された場合、スタックが空であるとき、それは2つの要素を追加すると、あまりにもmyBottom(...)を変更する必要があると思うことも

//Definition of pushTop() 
void Staque::pushTop(const StaqueElement & value) 
{ 
    myTop = new Staque::Node(value, myTop); 
    if (empty()) 
     myBottom = myTop; 
    count++; 
} 

注:

//Definition of pushBottom() 
void Staque::pushBottom(const StaqueElement & value) 
{ 
    if (empty()) 
    { 
     myBottom = new Staque::Node(value); 
     myTop->next = myBottom; 
     count++; 
    } 
    else 
    { 
     myBottom->next = new Staque::Node(value); 
     myBottom = myBottom->next; 
     count++; 
    } 
} 

代替

//Definition of pushBottom() 
void Staque::pushBottom(const StaqueElement & value) 
{ 
    if (empty()) 
     pushTop(value); 
    else 
    { 
     myBottom->next = new Staque::Node(value); 
     myBottom = myBottom->next; 
     count++; 
    } 
} 
関連する問題