-
大小: 19KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-02
- 語言: 其他
- 標簽: codeblocks??
資源簡介
[ 問題描述 ]
設計程序?qū)崿F(xiàn)兩個任意長整數(shù)的求和運算。
[ 基本要求 ]
《數(shù)據(jù)結(jié)構(gòu)》題集
利用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的存儲, 每個結(jié)點含一個整型變量. 任何整型變量的范圍是 -(215-1)~(215-1)。輸入和輸出形式: 按中國對于長整數(shù)的表示習慣, 每四位一組,組間用逗號隔開。
[ 測試數(shù)據(jù) ]
(1) 0;0;應輸出"0"。
(2) -2345,6789;-7654,3211; 應輸出"-1,0000,0000"。
(3) -9999,9999; 1,0000,0000,0000; 應輸出"9999,0000,0001"。
(4) 1,0001,0001; -1,0001,0001; 應輸出"0"。
(5) 1,0001,0001; -1,0001,0000; 應輸出"1"。
[ 實現(xiàn)提示 ]
(1) 每個結(jié)點可以存放的最大整數(shù)為 215-1 = 32767 才能保證兩數(shù)相加不會溢出。但若這樣存,即相當于按 32768 進制數(shù)存,在十進制數(shù)與 32768 進制數(shù)間的轉(zhuǎn)換十分不方便,故可以在每個結(jié)點中僅存十進制數(shù)的 4 位,即不超過 9999的非負整數(shù), 整個鏈表被視為萬進制。
(2)可以利用頭結(jié)點數(shù)據(jù)域的符號代表長整數(shù)的符號。 用其絕對值表示元素結(jié)點數(shù)目。相加過程中不要破壞兩個操作數(shù)鏈表。兩操作數(shù)的頭指針存于指針數(shù)組中是簡化程序結(jié)構(gòu)的一種方法。不能給長整數(shù)位數(shù)規(guī)定上限。
[ 選作內(nèi)容 ]
修改上述程序,使它在整型量范圍是-(2n-1)~(2n-1) 的計算機上都能有效地運行。其中 n 是由程序讀入的參量。輸入數(shù)據(jù)的分組方法可另行規(guī)定。

代碼片段和文件信息
#include?
#include
#include
#include
#define?OK?1
#define?ERROR?0
#define?OVERFLOW?-1
typedef?int?status;
typedef?struct?DuCirNode{
????int data;
????struct?DuCirNode?*prior;
????struct?DuCirNode?*next;
????int?len;
}DuCirNode?*DulinkList;
status?createlink(DulinkList?*L)
{
????if(!(*L=(DulinkList)malloc(sizeof(DuCirNode))))?return?OVERFLOW;
????????(*L)->next=*L;
????(*L)->prior=*L;
????(*L)->len=0;
????return?OK;
}
/*插入結(jié)點*/
status?insertNode(DulinkList?*L??int?data)
{
????DulinkList?p;
????if(!(p?=?(DulinkList)malloc(sizeof(DuCirNode))))?return?OVERFLOW; /*生成新結(jié)點*/
????p->data=data;
????p->next=(*L)->next;
????(*L)->next->prior=p;
????(*L)->next=p;
????p->prior=*L;
????(*L)->len++;
????return?OK;
}
/*deleteNode(*L);*/
status?deleteFirst(DulinkList?*L)
{
????DulinkList?p;
????if((*L)->len==1)
????????return?0;
????p=(*L)->next;
????(*L)->next=p->next;;
????free(p);
????(*L)->len--;
????return?OK;
}
void?DestroyList(DulinkList?*L){
????DulinkList?*q;
????while(L){
????????q=L;
????????L=(*L)->next;
????????free(q);
????}
}
status?input(DulinkList?*L){
????int?i=0t=0k;
????/*int len=0;*/
????int?j=0sum=0c=0;
????char?*sx;
????s=(char?*)malloc(100*sizeof(char?));
????s[0]=‘0‘;
????/*scanf(“%c“&x);*/
????x=getchar();
????while(x!=‘\n‘&&x!=‘?‘){
????????if(x!=‘‘){
????????????i++;
????????????t=i-1;
????????}
????????if(i==1){
????????????if(x>=‘0‘?&&?x<=‘9‘){
????????????????(*L)->data=1;
????????????????s[i]=x;
????????????}
????????????else?if(x==‘-‘){
????????????????????(*L)->data=-1;
????????????????????s[t]=‘-‘;
????????????????}
????????????????else?if(x==‘+‘){
????????????????????????(*L)->data=1;
????????????????????????s[t]=‘+‘;
????????????????}
????????????????/*else?if(x==‘0‘){
????????????????insertNode(L0);
????????????????return?OK;}*/
????????????????//else?;
????????}
????????else{
????????????if(x>=‘0‘?&&?x<=‘9‘){
????????????????if(s[0]==‘0‘)
????????????????????s[i]=x;
????????????????else
????????????????????s[t]=x;
????????????}
????????}
????????/* scanf(“%c“&x);*/
????????x=getchar();
????}
????/* getchar();*/
????if(s[0]==‘0‘)
????????s[++i]=‘\0‘;
????else
????????s[i]=‘\0‘;
????/*s[++i]=‘\0‘;*/
????for(i=strlen(s)-1;i>0;i--){
????????if(s[1]==‘0‘){
????????????insertNode(L0);
????????????return?OK;
????????}
????????j=j%4;
????????c=s[i]-‘0‘;
????????for(k=0;k ????????????c*=10;
????????sum=sum+c;
????????j++;
????????if(j==4){
????????????insertNode(Lsum);sum=0;
????????}
????????/* j++;*/
????}
????/*j--;*/
????if(j<4?/*&&?j>=0*/)insertNode(Lsum);
????return?OK;
}
status?add(DulinkList?L1?DulinkList?L2?DulinkList?*result)
{
????DulinkList?p1p2q1q2;
????int?resDatat*jinwei*jieweii=1;
????jinwei=(int?*)malloc(100*sizeof(int));
????jiewei=(int?*)malloc(100*sizeof(int));
????p1=L1->prior;
????p2=L2->prior
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-04-06?10:40??長整數(shù)運算\
?????目錄???????????0??2019-03-31?00:10??長整數(shù)運算\bin\
?????目錄???????????0??2019-03-31?10:55??長整數(shù)運算\bin\Debug\
?????文件???????34844??2019-03-31?10:55??長整數(shù)運算\bin\Debug\長整數(shù)運算.exe
?????文件????????9838??2019-03-31?10:55??長整數(shù)運算\main.c
?????目錄???????????0??2019-03-31?00:10??長整數(shù)運算\obj\
?????目錄???????????0??2019-03-31?10:55??長整數(shù)運算\obj\Debug\
?????文件????????7817??2019-03-31?10:55??長整數(shù)運算\obj\Debug\main.o
?????文件????????1134??2019-03-31?00:10??長整數(shù)運算\長整數(shù)運算.cbp
?????文件?????????145??2019-03-31?10:52??長整數(shù)運算\長整數(shù)運算.depend
?????文件?????????359??2019-04-06?10:40??長整數(shù)運算\長整數(shù)運算.layout
- 上一篇:arcgis10.5+漢化包安裝包
- 下一篇:labview示波器上位機程序
評論
共有 條評論