/**
* 用單鏈表實現兩個大整數相加運算
* 目的:深入掌握單鏈表應用的演算法設計
* 主要功能:
* 1、將使用者輸入的十進位制整數字串轉化為帶頭結點的單鏈表,每個結點存放乙個整數字
* 2、求兩個整數單鏈表相加的結果單鏈表
* 3、求結果單鏈表的中間位,如123的中間位為2,1234的中間位為2
* @date:2018-01-14
* @author:xiezhi
*/#include
#include
#include
#define max_size 50
typedef struct node
nodetype;
/*------------------------建立整數單鏈表--------------------------*/
static void create_list(nodetype *&h, char a, int n)// 指標的引用
r->next = null;
}/*------------------------輸出整數單鏈表--------------------------*/
static void display_list(nodetype *h)
printf("\n");
}/*------------------------釋放整數單鏈表--------------------------*/
static void destroy_list(nodetype *&h)
free(pre);
}/*------------------------兩整數單鏈表h1和h2相加得到h--------------------------*/
static void add_list(nodetype *h1, nodetype *h2, nodetype *&h) // 指標的引用
if(p1 == null)
p1 = p2;
while(p1 != null)
// 最後carry不為0時,建立乙個結點存放它
if(carry > 0)
r->next = null;
}/*------------------------逆置整數單鏈表h--------------------------*/
static void reverse_list(nodetype *&h)
}/*------------------------求整數單鏈表h的中間位--------------------------*/
/*** 演算法設計思路:
* 定義快指標quick和慢指標slow,初始時都指向頭結點,當快指標沒有
* 掃瞄完整數單鏈表h時,每次讓慢指標slow前進乙個結點,快指標quick前進兩個
* 結點.當快指標到達鍊錶尾時,慢指標slow指向的結點就是中間結點.
*/static int mid_list(nodetype *h)
return slow->data;
}int main(int argc, char *ar**)
運算結果:
操作步驟:
(1)輸入整數1: 99999999
(2)輸入整數2: 666666661
(3)整數單鏈表1: 9 9 9 9 9 9 9 9
(4)整數單鏈表2: 1 6 6 6 6 6 6 6 6
(5)結果單鏈表: 0 6 6 6 6 6 6 6 7
(6)對應的整數: 7 6 6 6 6 6 6 6 0
(7)中間位: 6
用單鏈表實現兩個大型整數的相加
最近幾天一直在忙老師布置的作業,現在小有成就,和大家分享一下。include include define null 0 define len sizeof struct lnode 巨集定義結構體的大小 typedef struct lnode lnode list 定義兩個節點型別,乙個是普通的...
兩個大整數相加
本程式功能為將輸入的兩個大整數求和 include int main t date2 100 f date 100 char a,b char date1 100 date2 100 printf 請輸入兩個大整數,以回車鍵區分 n while a getchar n while b getchar...
兩個大整數相加 Java實現
本文分析和實現了兩個大整數相加的思路和做法 1.首先,由於計算機表示的整數範圍有限,當加數的位數超過計算機所能表示的範圍時就需要用到這裡的演算法。由於整數過大,不能一次完成相加,我們猜想能否將兩個整數儲存到陣列中,然後逐位相加。當然,這裡實現的方法就是基於此。如下 public class bigi...