xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 755KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-10
  • 語言: 其他
  • 標簽: 課設??

資源簡介

1. 任意長的整數加減法運算
設計算法,實現一個任意長的整數進行加法、減法運算的演示程序。例如:1234,5123,4512,3451,2345與-1111,1111,1111,1111,1111的加法結果為:0123,4012,3401,2340,1234。基本要求如下:
(1)利用鏈表實現長整數的存儲,每個節點含一個整型變量;
(2)整型變量的范圍:-(2^15 -1)~(2^15 -1);
(3)輸入與輸出形式每四位一組,組間用逗號分隔開。如:1986,8213,1935,2736,3299;
(4)界面友好,每步給出適當的操作提示,并且系統具有一定的容錯能力。
至少給出下面的測試數據:
(1)0; 0
(2)-2345,6789; -7654,3211
(3)-9999,9999; 1,0000,0000,0000
(4)1,0001,0001; -1,0001,0001
(5)1,0001,0001; -1,0001,0000
(6)-9999,9999,9999; -9999,9999,9999
(7)1,0000,9999,9999; 1

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
const?int?N?=?1e5+10;//?最長的整數長度
char?A[N]?B[N];
//循環鏈表結點
struct?node
{
????int?data;???????????//?數值域
????int?len;???????????//?長度
????node*?pre;????//?前驅
????node*?next;??//?后繼
};

typedef?node*?List;

void?Type_char(List?*L?char?*s);//!字符串轉換為鏈表
List?add(List?A?List?B);//!計算A+B
List?sub(List?A?List?B);//!計算A-B
void?print(List?a);//!輸出a鏈表
void?Init();//!初始化操作包括輸入
void?menu();//!菜單
int?main()
{
????menu();
????return?0;
}
/*測試數據
(1)-23456789;?-76543211;?輸出?-1000000
(2)-99999999;?1000000000000;?輸出?999900000001
(3)100010001;?-100010001;?輸出?0
(4)100010001;?-100010000;?輸出?1
(5)-999999999999;?-999999999999;?輸出?-1999999999998
(6)1000099999999;?1;?輸出?1000100000000
*/





//?將字符串字轉換成鏈表
//!頭部是符號位
void?Type_char(List?*L?char?*s)
{
????List?p?q;
????(*L)?=?(List)malloc(sizeof(node));
????(*L)->pre?=?NULL;
????(*L)->next?=?NULL;
????(*L)->data?=?‘+‘;???????????//?默認符號位為‘+‘
????p?=?(*L);
????int?len?=?strlen(s)sum?=?1Size?=?0End?=?0;
????if(s[0]?==?‘-‘)
????{
????????(*L)->data?=?‘-‘;
????????End?=?1;????//?如果是符號“,“則從字符串第二個字符位置開始
????}
????for?(int?i?=?len-1;?i?>=?End;?--i)
????{
????????if(sum?%?5)
????????{
????????????q?=?(List)malloc(sizeof(node));
????????????q->data?=?s[i]?-?‘0‘;?????????//?字符轉換為整數
????????????q->pre?=?p;
????????????p->next?=?q;
????????????p?=?q;
????????????Size++;
????????}
????????sum++;
????}

????//?循環連接
????p->next?=?(*L);
????(*L)->pre?=?p;
????(*L)->len?=?Size;????????????????????//?記錄鏈表的長度-1?————?不帶符號位的長度
}

//?加法
List?add(List?A?List?B)
{
????int?len1?=?A->len;
????int?len2?=?B->len;
????List?a?b;????????//?a為較長的整數鏈表,?b為較短的整數鏈表
????if(len1?>?len2)
????{
????????a?=?A;
????????b?=?B;
????}
????else
????{
????????a?=?B;
????????b?=?A;
????}
????len1?=?a->len;??????????//?較長鏈表長度
????len2?=?b->len;??????????//?較短鏈表長度

????int?sum?=?0;
????int?temp?=?0;?????????????//?保存進位值
????while?(sum?!=?len1)
????{
????????a?=?a->next;
????????b?=?b->next;

????????if?(sum?>=?len2)?a->data?=?a->data?+?temp;//已經超過較短鏈表長度,所以不需要加b->data
????????else?a->data?=?a->data?+?b->data?+?temp;
????????temp?=?0;
????????if?(a->data?>=?10)?a->data?-=?10?temp?=?1;//超過10表示有進位值
????????sum++;
????}
????if?(temp)
????{
????????//?如果最后一位還有進位則創建一個新的結點放到隊頭
????????List?p?=?(List)malloc(sizeof(node));
????????p->data?=?temp;
????????p->next?=?a->next;
????????a->next->pre?=?p;
????????p->pre?=?a;
????????a->next?=?p;
????????a?=?p;
????????len1++;
????}
????a?=?a->next;???????//?回到符號位
????a->len?=?len1;??????//?注意頭部長度要變化
????return?a;
}

//?減法
List?sub(List?A?List?B)
{
????int?len1?=?A->len;
????int?len2?=?B->len;
????List?a?b;????????//?a為較長的整數鏈表,?b為較短的整數鏈表
????if(len1?>?len2)
????{
????????a?=?A;
????????b?=?B;
????}
????else?if(len1?????{
????????a?=?B;
????????b?=?A;
????}
????else
????{
????????List?tmp1?=?A?tm

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????619520??2019-10-24?16:57??《數據結構課程設計》——課程設計報告之任意長整數加法.doc
?????文件???????26173??2019-10-24?16:57??任意大數流程圖.png
?????文件????????7022??2019-10-24?16:42??任意長的整數加法.cpp
?????文件??????189571??2019-10-24?16:05??長整數.png

評論

共有 條評論