演算法學習 鍊錶相加

2021-07-24 14:22:59 字數 1098 閱讀 6339

題目

給定兩個鍊錶,分別表示兩個非負整數。他們的數字逆序儲存在鍊錶中,且每個節點只儲存乙個數字,計算兩個數的和,並且返回和的煉表頭指標。

如:輸入2->4->3、5->6->4,輸出:7->0->8

此題為簡單的數學加法計算和簡單的鍊錶操作的結合,很簡單,直接附上**

#include "stdafx.h"

#include typedef struct tagsnode

}snode;

void print(snode* phead)

snode* p = phead->pnext;

while(p)

printf("\n");

}snode* add(snode* phead1, snode* phead2)

// 處理較長的鏈

snode* p = p1 ? p1 : p2;

while (p)

// 處理最後可能有的進製

if (carry != 0)

return psum;

}void destory(snode* &phead)

snode* p = phead->pnext;

while(p)

delete phead;

phead = null;

}int _tmain(int argc, _tchar* argv)

snode* phead2 = new snode(0);

for(i = 0; i < 9; i++)

print(phead1);

print(phead2);

snode* psum = add(phead1, phead2);

print(psum);

destory(phead1);

destory(phead2);

destory(psum);

system("pause");

return 0;

}

注:這裡進製不可能大於1所以僅為可以用bool來表示

這個題目可以擴充套件成為乙個大整數加法運算和高精度小數運算。

leetcode 鍊錶相加

給定兩個用鍊錶表示的整數,每個節點包含乙個數字。這些數字是反向存放的,也就是個位排在鍊錶首部。編寫函式對這兩個整數求和,並用鍊錶形式返回結果。示例 輸入 7 1 6 5 9 2 即617 295 輸出 2 1 9,即912 採用原地演算法,比較兩個鍊錶長度,如果長度一致,那麼鍊錶相加到任一鍊錶,計算...

leetcode 2鍊錶相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

Leetcode NO 2 兩數相加 鍊錶相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...