2016-10-20 10 views
-1

単一のリンクリストでは、それを保持するノードを削除できます。 これは、次のノードデータを現在のノードにコピーして終了するまで実行できます。linked list:最後のノードを削除する方法。単一のリンクリストで最後のノードへのポインタを持つ方法

しかし、自己へのポインタを保持して知ることで、最後のノードを削除するにはどうすればよいですか?

-Thanks

+0

また、最後のノードの前にノードのアドレスが必要です。このノードは 'next'ポインタを' NULL'に設定しなければなりません。 'head'ノードにアクセスできない場合、削除はできません。 –

+0

私はあなたに同意します。 私はこの質問をクアルコムとのインタビューで見つけました。 インタビュアーはこれを行うことができると主張しています。 –

答えて

0

我々はノードを削除すると、それは我々がポインタでないポインタ自身が指すメモリを解放を意味します。したがって、最後のノードの場合も同じことができます。

つまり ptr =(最後のノード)のアドレス。これはポインタのアドレスと同じではありません。

+0

単一リンクリストでは、最後のノードがNULLを指している必要があります。 実際の課題は、最後にNULLを設定することですが、1つのリンクされたリストで1つのノードを設定することです。 structノード{ int data; struct node * link; x-> y-> z x、y、zが単一リンクリストの3つのノードであるとしましょう。 ptrがZノードを指しています。 ptrを削除する前に、ノード "Y"にNULLを設定する必要があります。 –

2

これは一般的に不可能です。最後のノードの前にノードのアドレスが必要です。このノードのnextポインターをNULLに設定する必要があります。直前のノードは、単一リンクリストの最後のノードから直接アクセスすることはできません。

ただし、headノードにアクセスできる場合は、リストをもう一度トラバースして、最後のノードの前にノードを取得することができます。

関連する問題