順序線性表之大整數求和
大整數求和偽**
1、初始化進製標誌 flag=0;
2、求大整數 a 和 b 的長度:
int alength = a.getlength();
int blength = b.getlength();
3、從各位開始逐位進行第 i 位的加法,直到 a 或 b 計算完畢:
3.1、計算第 i 位的值:c.insert(i+1, (a.getelement(i + 1) + b.getelement(i + 1) + flag) % 10);
3.2、計算該位的進製:flag = (a.getelement(i + 1) + b.getelement(i + 1) + flag) / 10;
4、計算大整數 a 或 b 餘下的部分;
5、計算結果的進製
注:用陣列來存放大整數
一、順序線性表標頭檔案:seqlist.h
1二、大整數求和標頭檔案:bidintegeradd.h//順序線性表的標頭檔案
2 #include3
4const
int maxsize = 100;5
//定義順序表seqlist的模板類
6 template
7class
seqlist
11//
順序表有參構造器(建立乙個長度為n的順序表)
12 seqlist(datatype array, int
n);13
//順序表析構函式
14 ~seqlist(){}
15//
求順序表的長度
16int getlength()
17//
順序表按位查詢,返回i位置的元素
18 datatype getelement(int
i);19
//順序表按值查詢,返回該元素所在的位置
20int
getlocal(datatype x);
21//
順序表在指定的位置插入指定的元素
22void insert(int
i, datatype x);
23//
順序表刪除元素,返回刪除的元素
24 datatype delete(int
i);25
//輸出順序表中的元素
26void
printseqlist();
27private:28
//一維陣列,存放資料元素
29datatype data[maxsize];
30//
順序表的長度
31int
length;
32};
3334
//實現順序表有參構造器
35 template
36 seqlist::seqlist(datatype array, int
n)37
42//
給順序表的儲存元素的陣列賦值
43for (int i = 0; i < n; i++)
4447
//給順序表的長度賦值
48 length =n;49}
5051
//實現順序表按位查詢
52 template
53 datatype seqlist::getelement(int
i)54
60else
6165}66
67//
實現順序表按值查詢,返回該元素所在的位置
68 template
69int seqlist::getlocal(datatype x)
7080}81
//如果指定的元素不在順序表中,則返回位置為0
82return0;
83}8485
//實現順序表插入元素
86 template
87void seqlist::insert(int
index, datatype x)
8894
if (index<1 || index>length + 1)95
98//
如何插入的位置合理,則把順序表中從最後位置到指定插位置的元素整體向後移動乙個位置
99for (int j = length; j >= index; j--)
100103
//給插入的位置放入指定的元素
104 data[index - 1] =x;
105 length++;
106}
107108
//實現順序表刪除指定位置的元素
109 template
110 datatype seqlist::delete(int
index)
111119
else
120128
//刪除順序表中的元素後,其長度減1
129 length--;
130}
131return
x;132
}133
134//
順序輸出順序表中的元素
135 template
136void seqlist::printseqlist()
137142
else
143149 cout <
150}
151 }
1三、測試順序線性表之大整數求和:testbigintegeradd.h//順序線性表之大整數求和
2 #include3
//引入順序線性表的標頭檔案
4 #include"
seqlist.h"5
using
namespace
std;
67 seqlist add(seqlista, seqlistb)825
//計算大整數 a 餘下的部分
26for (; i < alength; i++)
2731
//計算大整數 b 餘下的部分
32for (; i < blength; i++)
3337
//如果最後有進製,則結果會多一位
38if (flag == 1)39
42return
c;43 }
1四、執行示例結果//測試順序線性表之大整數求和
2 #include3
//引入順序表之大整數求和標頭檔案
4 #include"
bigintegeradd.h"5
using
namespace
std;
6int
main()7;
10int array2 = ;
11 seqlista = seqlist(array1,9
);12 cout << "
第乙個大整數是:
"<
13a.printseqlist();
14 seqlistb = seqlist(array2,8
);15 cout << "
第二個大整數是:
"<
16b.printseqlist();
17 seqlistc =add(a, b);
18 cout << "
他們的和是:
"<
19c.printseqlist();
20return0;
21 }
C 實現順序表(線性表)
基本思想是使用陣列作為盛放元素的容器,陣列一開始的大小要實現確定,並使用乙個pointer指向順序表中最後的元素。順序表中的元素是陣列中元素的子集。順序表在記憶體中是連續的,優勢是查詢,弱勢是插入元素和刪除元素。為避免裝箱拆箱,這裡使用泛型,代替object。使用object的例子可以參照這個鏈結中...
線性表順序實現
線性表實現,建立表,插入元素,刪除元素,銷毀表,表的遍歷,表的並集交集差集。不斷更新中。include include include include define list init size 100 初始大小 define error 0 define listincrement 10 增量大小...
線性表的順序實現 C
線性表的順序實現,採用c 封裝了乙個類,歡迎各位感興趣的同學共同學習討論。定義 ifndef cseqlist define cseqlist ifdef cplusplus extern c seqlist class cseqlist seqlist seq ifdef cplusplus en...