3

私が持っている宿題のアイデアが必要です。次の定義を検討してください。

typedef struct listNode {
    int* dataPtr;
    struct listNode* next;
} ListNode;

typedef struct list {
    ListNode* head;
    ListNode* tail;
} List;

各リスト ノードは 1 つの数字を表します。各数値はリストで表されますが、逆の方法で表されます。数値の最後の桁はリストの最初のリスト ノードであり、数値の最初の桁はリストの最後のリスト ノードです。

関数を書きました

void addNumbers(List n1, List n2, List *sum);

これは、他の 2 つのリストの合計を含む新しいリストを返します。

次に、乗算用の関数を作成する必要があります。

void multNumbers(List n1, List n2 , List* prod);

そして、私はそれを実装する方法にちょっとこだわっています。コードについてではなく、それを行う方法についてです。言うまでもなく、数値を整数に変換し、乗算し、結果をリストに変換することは許可されていません。

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

これは、コードの再利用の良い練習になります。2 つのリンクされたリスト番号を追加する関数を既に作成しているため、その関数を使用して乗算 (の一部) を実行できますか? 結局、乗算は、最初の数値に 2 番目の数値のいずれかの数字を繰り返し乗算し、すべての結果を加算することにより、手動で実行できます。これらの行に沿って何かを試してください:

  • 結果を含むリンクされたリスト番号を作成し、ゼロに設定します
  • 2 番目の数値の桁をループします
    • 各桁について、最初の数値をその桁で乗算します (これを行う別の関数を作成する必要があります。加算関数を作成できた場合、これはそれほど難しくないはずです)。
    • 結果の末尾にゼロを追加して、数字が十分に左にシフトされるようにします
    • を使用して、結果に数値を追加します。addNumbers()
于 2012-04-15T22:40:25.733 に答える