2017-12-06 3 views
-2

双方向リングの前面から要素をポップアウトする機能に問題がありました。Pop_front二重リンクリスト機能の問題

template <typename Key, typename Info> 
void Ring<Key, Info>::pop_front() { 
if (!isEmpty()) { 

    Node* p = any->next; 
    if (any != NULL) { 
    p->prev->next = p->next; 
    p->next->prev = p->prev; 
    delete p; 
    }}} 

begin()関数が定義されています。 ご覧のとおり、完全に動作するはずですが、最初の要素から開始されません。それは第2のものをポップする。 どうすればよいですか?どのように最初のノードを指す?

+1

に 'any'は何ですか?それが何であるかにかかわらず、あなたが既に参照解除した後で、それが 'NULL' **をチェックしているのはやや意味がありません。 –

+0

https://stackoverflow.com/help/mcve –

+0

いずれもヘッドとして動作します –

答えて

0

変更Node* p = any->next;Node* p = any;

+0

出力でメモリの問題が発生しました。 –

+0

@MartaK。 - あなたが達成しようとしているものの図を描き、手でそれを歩かない限り、リンクされたリストの操作コードは間違っていることが保証されます。だからダイアグラムを描き、あなたのコードが何をしているのかを手で把握してください。問題を参照してください? –

関連する問題