2016-09-09 3 views
-3

リンクされたリストの各ノードのデータには、単一トラバーサルの1/0が含まれており、小数点相当を計算する必要があります。単一トラバーサルを使用したリンクリストのバイナリ等価の計算?

再帰的および非再帰的なC?

NODE *decimalData(NODE *head) 
{ 
    int sum=0; 
    if(head->next==0) 
    { 
      if(head->data==0) return 0; 
       else return 1; 
    } 
    sum=decimalData(head->next); 
    return 2*sum; 
} 
+1

戻り値の型はNodeで、整数を返します。 – Shravan40

+0

コンパイラの警告をチェックすると、 'sum = decimalData(head-> next);で整数変換へのポインタについて不平を言わなければなりません。 – Barmar

答えて

0

あなたはhead->nextで見つかったデータビットは現在head->data以下の重要なよりも重要であるかどうかを言いませんでした。それがより重要であれば、問題はやや簡略化されています。

unsigned decimalData(NODE *head) 
{ 
    unsigned sum = head->data; 

    if (head->next != NULL) 
    { 
      sum += (decimalData(head->next) << 1); 
    } 

    return sum; 
} 
+0

おかげでそれはうまくいった – AnilChalla

関連する問題