C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で不変のリンクリストを逆に印刷する


不変のリンクリストがあるとすると、次のインターフェイスを使用して、各ノードのすべての値を逆に出力する必要があります-

  • ImmutableListNode-これは不変のリンクリストのインターフェースであり、リストの先頭が与えられます。

リンクリストにアクセスするには、次の関数を使用する必要があります-

  • ImmutableListNode.printValue()-これにより、現在のノードの値が出力されます。

  • ImmutableListNode.getNext()-これは次のノードを返します。

したがって、リストが[0、-4、-1、3、-5]の場合、出力は[-5、3、-1、-4、0]

になります。

これを解決するには、次の手順に従います-

  • ImmutableListNodeタイプのノードのスタックstを定義します

  • 頭がヌルではない間

    • 頭をstに挿入します

    • 頭:=頭の次

  • stが空ではない間

    • スタックトップノードの値を出力します

    • スタックからノードを削除する

例(C ++)

理解を深めるために、次の実装を見てみましょう-

class Solution {
public:
   void printLinkedListInReverse(ImmutableListNode* head) {
      stack <ImmutableListNode*> st;
      while(head){
         st.push(head);
         head = head->getNext();
      }
      while(!st.empty()){
         st.top()->printValue();
         st.pop();
      }
   }
};

入力

[0,-4,-1,3,-5]

出力

[-5,3,-1,-4,0]

  1. C++のリンクリストの代替ノードの合計

    この問題では、リンクリストが表示されます。私たちのタスクは、リンクリストの代替ノードの合計を出力することです。 リンクリストは、リンクを介して相互に接続された一連のデータ構造です。 では、問題に戻りましょう。ここでは、リンクリストの代替ノードを追加します。これは、ノードが位置0、2、4、6、…であることを追加することを意味します 問題を理解するために例を見てみましょう。 入力 4 → 12 → 10 → 76 → 9 → 26 → 1 出力 24 説明 considering alternate strings

  2. C ++で再帰を使用して、リンクリストの代替ノードを出力します

    リンクリストは、要素を連続していないメモリ位置に格納する線形データ構造です。すべての要素には、リンクリストの次の要素へのポインタが含まれています。 例 − この問題では、リンクリストが与えられ、このリンクリストの要素を印刷する必要がありますが、代替要素のみが印刷されます。問題をよりよく理解するために例を見てみましょう。 Input : 2 -> 4 -> 1 -> 67 -> 48 -> 90 Output : 2 -> 1 -> 48 説明 −リンクリストに代替要素を出力します。したがって、1番目、3番目、5番目の要素が印刷されます。