題目長(zhǎng)整數(shù)乘法_第1頁(yè)
題目長(zhǎng)整數(shù)乘法_第2頁(yè)
題目長(zhǎng)整數(shù)乘法_第3頁(yè)
題目長(zhǎng)整數(shù)乘法_第4頁(yè)
題目長(zhǎng)整數(shù)乘法_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 題目: 長(zhǎng)整數(shù)乘法班級(jí):姓名:學(xué)號(hào):完成日期:1:需求分析(1) 輸入的形式和輸入值的范圍:用戶從鍵盤(pán)輸入2個(gè)任意長(zhǎng)度的長(zhǎng)整數(shù),輸入的時(shí)候是按4個(gè)為一段輸入的,即一段一段輸入的,求它們的乘積的大小,并將結(jié)果在屏幕上顯示;2個(gè)長(zhǎng)整數(shù)的輸入沒(méi)有大小的限制,要輸入多大的數(shù)據(jù),就可以輸入多大的數(shù)據(jù).(2) 輸出的形式: 輸出直接在屏幕上顯示2個(gè)任意長(zhǎng)度的長(zhǎng)整數(shù)的乘積大小(3) 程序所能達(dá)到的功能: 對(duì)于用戶輸入的任意長(zhǎng)度的2個(gè)的長(zhǎng)整數(shù),能夠正確沒(méi)有錯(cuò)誤的顯示結(jié)果,和電腦附件中的計(jì)算器的計(jì)算值要一致;能夠準(zhǔn)確無(wú)誤地顯示結(jié)果(4) 測(cè)試數(shù)據(jù) 如輸入1000 1000 和1111 2個(gè)長(zhǎng)整數(shù)后,顯示011

2、1 1111 1111 1000的話,就是正確的結(jié)果形式; 如輸入1111 1111 1111和1111 2個(gè)長(zhǎng)整數(shù)后,結(jié)果顯示0123 4444 4444 4322就不是正確結(jié)果,因?yàn)檫@2個(gè)長(zhǎng)整數(shù)的積為0123 4444 4444 43212:概要設(shè)計(jì) a:抽象數(shù)據(jù)類(lèi)型的定義為了實(shí)現(xiàn)任意長(zhǎng)整數(shù)的乘法,因?yàn)檫@種運(yùn)算存在進(jìn)位和位移等操作,因此選擇雙鏈表的結(jié)構(gòu)體,它有一個(gè)data,left,right;考慮到data表示的數(shù)據(jù)的范圍,使它只接受4個(gè)數(shù)字的整數(shù),這樣一個(gè)長(zhǎng)整數(shù)就分為若干段,每一段為4個(gè)數(shù)字,便于進(jìn)位和借位以及位移的操作,用戶在輸入時(shí)就是每次輸入4個(gè)數(shù)字.b:主程序的流程 主程序是首先

3、調(diào)用初始化2個(gè)長(zhǎng)整數(shù)的函數(shù),用戶4個(gè)數(shù)字一段一段地輸入2個(gè)長(zhǎng)整數(shù),用雙鏈表的形式和頭插法的形式建立,返回2個(gè)長(zhǎng)整數(shù)的頭節(jié)點(diǎn);建立完2個(gè)長(zhǎng)整數(shù)后,就開(kāi)始進(jìn)行2個(gè)長(zhǎng)整數(shù)的乘積的運(yùn)算了;首先將第一個(gè)長(zhǎng)整數(shù)的全部去乘第2個(gè)長(zhǎng)整數(shù)的最后一段,這樣得到一個(gè)長(zhǎng)整數(shù);接著將第一個(gè)長(zhǎng)整數(shù)的全部去乘第2個(gè)長(zhǎng)整數(shù)的倒數(shù)第2段,這樣得到一個(gè)長(zhǎng)整數(shù),但是要向左位移4位; 這次得到的長(zhǎng)整數(shù)要和上一次相加,得到一個(gè)新的長(zhǎng)整數(shù);接著接著將第一個(gè)長(zhǎng)整數(shù)的全部去乘第2個(gè)長(zhǎng)整數(shù)的倒數(shù)第3段,得到一個(gè)長(zhǎng)整數(shù),再和前面相加;依次進(jìn)行,一直到已經(jīng)到第一個(gè)長(zhǎng)整數(shù)的全部乘于了第2個(gè)長(zhǎng)整數(shù)的最高1段,那么乘法就結(jié)束了;這時(shí)將得到的長(zhǎng)整數(shù)從高位

4、到低位一段一段,4個(gè)4個(gè)數(shù)字顯示在屏幕上,程序就運(yùn)行結(jié)束了.c:模塊之間的層次(調(diào)用)關(guān)系 程序的調(diào)用關(guān)系如下:主函數(shù)調(diào)用了初始化2個(gè)長(zhǎng)整數(shù)的函數(shù),然后再調(diào)用了2個(gè)2個(gè)長(zhǎng)整數(shù)的乘積的函數(shù);2個(gè)長(zhǎng)整數(shù)的乘積的函數(shù)調(diào)用了部分求和的函數(shù)和從表頭得到表尾的函數(shù),以及將一個(gè)長(zhǎng)整數(shù)前后數(shù)值交換的函數(shù)以及顯示一個(gè)長(zhǎng)整數(shù)的函數(shù).3詳細(xì)設(shè)計(jì) a:2個(gè)長(zhǎng)整數(shù)的輸入 接著采用頭插法的方式,當(dāng)輸入一個(gè) 4個(gè)數(shù)字的整數(shù)時(shí),就產(chǎn)生一個(gè)新的節(jié)點(diǎn),它的值為輸入的整數(shù)值,建立起它的左右指針,并用頭節(jié)點(diǎn)指向它;為了判斷一個(gè)長(zhǎng)整數(shù)是否輸入結(jié)束,定義一個(gè)結(jié)束標(biāo)志,當(dāng)輸入正數(shù)時(shí)就繼續(xù),當(dāng)輸入負(fù)數(shù)時(shí),就結(jié)束一個(gè)長(zhǎng)整數(shù)的輸入;同時(shí)用一個(gè)函

5、數(shù)得到長(zhǎng)整數(shù)的尾節(jié)點(diǎn)和段數(shù),段數(shù)在比較2個(gè)數(shù)的大小有用。 b:2個(gè)長(zhǎng)整數(shù)的乘法先定義一個(gè)部分加法的函數(shù),就是2個(gè)正的長(zhǎng)整數(shù)的加法的運(yùn)算;它從2個(gè)長(zhǎng)整數(shù)的尾部開(kāi)始,同時(shí)相加,接著再向左移一段,又同時(shí)相加;當(dāng)2個(gè)數(shù)據(jù)的某一段同時(shí)存在時(shí),就相加;當(dāng)一個(gè)數(shù)據(jù)已經(jīng)全部被相加后,另外一個(gè)數(shù)據(jù)的剩下的段就要全部復(fù)制到和中;在實(shí)行加法的時(shí)候,設(shè)置一個(gè)進(jìn)位標(biāo)志位,目的是為了使結(jié)果正確;當(dāng)一 段的數(shù)據(jù)相加產(chǎn)生進(jìn)位時(shí),那么進(jìn)位標(biāo)志位為1;下一次一 段的數(shù)據(jù)相加就要加上這個(gè)進(jìn)位標(biāo)志位;而且如果2個(gè)長(zhǎng)整數(shù)的所有的段的數(shù)據(jù)都相加完了,還要判斷是否產(chǎn)生了進(jìn)位標(biāo)志位,如果有的話,就要新建一個(gè)節(jié)點(diǎn),它的值就是1;2個(gè)正的長(zhǎng)整數(shù)

6、的求和就完成了。再定義一個(gè)部分乘法的函數(shù),就是1個(gè)正的長(zhǎng)整數(shù)乘于一個(gè)4位整數(shù),并向左位移特定的段數(shù)的運(yùn)算;其實(shí)開(kāi)始實(shí)現(xiàn)向左位移的運(yùn)算,只需要建立新的節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)目為需要左移段數(shù),并將這些節(jié)點(diǎn)的值設(shè)置為0;接著實(shí)現(xiàn)一個(gè)長(zhǎng)整數(shù)乘于一個(gè)4位整數(shù)的運(yùn)算,采用每一段都和這個(gè)4位整數(shù)的相乘的方法,當(dāng)積超過(guò)10000時(shí),那么多于高4位全為進(jìn)位,參與下一次相乘時(shí)要加上它;低4位就是要新建的節(jié)點(diǎn)的值;和加法一樣,當(dāng)這個(gè)正的長(zhǎng)整數(shù)的每一段都和這個(gè)4位整數(shù)相乘后,但還存在進(jìn)位時(shí),就要新建一個(gè)節(jié)點(diǎn),它的值就是進(jìn)位值;現(xiàn)在1個(gè)正的長(zhǎng)整數(shù)乘于一個(gè)4位整數(shù),并向左位移特定的段數(shù)的運(yùn)算就完成了;再實(shí)現(xiàn)2個(gè)正的長(zhǎng)整數(shù)的乘法的

7、運(yùn)算,采用第一個(gè)長(zhǎng)整數(shù)作為一個(gè)整體乘于第二個(gè)長(zhǎng)整數(shù)的每一段,并向左位移的方法;例如當(dāng)采用第一個(gè)長(zhǎng)整數(shù)作為一個(gè)整體乘于第二個(gè)長(zhǎng)整數(shù)的最后一段,就不用向左位移;但是第一個(gè)長(zhǎng)整數(shù)作為一個(gè)整體乘于第二個(gè)長(zhǎng)整數(shù)的倒數(shù)第二段,就用向左位移一段,就是最后一段為0,依次類(lèi)推;此過(guò)程是調(diào)用部分乘法的函數(shù)實(shí)現(xiàn)的;我們只需要定義2個(gè)長(zhǎng)整數(shù)的臨時(shí)變量,1個(gè)是本次新產(chǎn)生的部分乘法的結(jié)果,1個(gè)是上次的總和;那么總和加上本次新產(chǎn)生的部分乘法的結(jié)果重新給總和,此操作是調(diào)用2個(gè)長(zhǎng)整數(shù)的加法實(shí)現(xiàn)的;第2個(gè)數(shù)的段一直向左位移,總和也就不斷擴(kuò)大,當(dāng)?shù)?個(gè)數(shù)的段達(dá)到最高一段時(shí),就完成了2個(gè)正的長(zhǎng)整數(shù)的乘法的運(yùn)算。f:補(bǔ)充說(shuō)明 在程序中

8、,因?yàn)槲覀冃枰玫揭粋€(gè)長(zhǎng)整數(shù)的頭部和尾部,因此定義了2個(gè)函數(shù),一個(gè)是已知一個(gè)一長(zhǎng)整數(shù)的頭部,得到它的尾部;一個(gè)是已知一個(gè)一長(zhǎng)整數(shù)的尾部,得到它的頭部;具體實(shí)現(xiàn)都是利用指針的左移和右移,為空時(shí)就得到頭部或尾部;在程序中,我們輸入是從高位到低位輸入的,而相加后的順序就相反了,因此我們需要定義一個(gè)將一個(gè)長(zhǎng)整數(shù)的數(shù)據(jù)前后交換的函數(shù),新建一個(gè)一個(gè)長(zhǎng)整數(shù),使用頭插法,將從原來(lái)一個(gè)長(zhǎng)整數(shù)的尾部開(kāi)始,向左移,一個(gè)一個(gè)給新建的長(zhǎng)整數(shù)。4調(diào)試分析a調(diào)試過(guò)程中遇到的問(wèn)題是如何解決 問(wèn)題1:調(diào)試過(guò)程中發(fā)生內(nèi)存錯(cuò)誤的提示? 內(nèi)存錯(cuò)誤有非常大的原因是指針的濫用和它的空間的使用不規(guī)范情況,但最可能是指針還沒(méi)有開(kāi)辟空間,就已

9、經(jīng)指向了一個(gè)實(shí)際存在的數(shù);查找代碼,果然發(fā)現(xiàn),head在使用中沒(méi)有開(kāi)辟空間,.但后面語(yǔ)句有給它賦值的情況,因此添加代碼head=(dnode*)malloc(sizeof(dnode);再次調(diào)試時(shí)沒(méi)有發(fā)生一樣的錯(cuò)誤;問(wèn)題2:結(jié)果顯示的時(shí)候本應(yīng)該按從高位到低位輸出,結(jié)果從從低位到高位輸出? 我們定義的部分和的加法是從長(zhǎng)整數(shù)的尾部開(kāi)始的,即先從小的開(kāi)始加起,再加大的;但是我們還是采用的是頭插法的方法,因此頭節(jié)點(diǎn)其實(shí)是和的最小值,依次類(lèi)推,那么當(dāng)我們按從頭到尾節(jié)點(diǎn)輸出時(shí),就是從低到高輸出了;因此我們輸出的時(shí)候可以先從頭節(jié)點(diǎn)寫(xiě)一個(gè)函數(shù)得到尾節(jié)點(diǎn),再?gòu)奈补?jié)點(diǎn),從右到左的形式輸出結(jié)果,即從尾到頭的形式輸出

10、結(jié)果;因此我定義了一個(gè)從頭節(jié)點(diǎn)得到尾節(jié)點(diǎn)的函數(shù),再?gòu)奈驳筋^的形式輸出結(jié)果,這次輸出結(jié)果沒(méi)有錯(cuò)誤;問(wèn)題3:結(jié)果顯示的時(shí)候本總出現(xiàn)一個(gè)為-858993460的節(jié)點(diǎn)? 有可能是定義了一個(gè)節(jié)點(diǎn), 沒(méi)有被賦值,因此產(chǎn)生的情況; 查找代碼,果然發(fā)現(xiàn)s=(dnode*)malloc(sizeof(dnode);p->right=s;s->left=p;缺少了s的賦值的代碼,添加 s->data=inc后,運(yùn)行沒(méi)有錯(cuò)誤b算法的時(shí)空分析 時(shí)間復(fù)雜度:由于2個(gè)長(zhǎng)整數(shù)的乘法是用第一個(gè)長(zhǎng)整數(shù)的全部乘于了第2個(gè)長(zhǎng)整數(shù)的每一段然后想加得到的,因此它實(shí)際上就是2重循環(huán)的作用,假設(shè)2個(gè)數(shù)的段數(shù)分別為n1和n

11、2,那么算法的時(shí)間復(fù)雜度為n1和n2的乘積;空間復(fù)雜度: 空間復(fù)雜度是和2個(gè)長(zhǎng)整數(shù)的段數(shù)成正比, 2個(gè)長(zhǎng)整數(shù)的段數(shù)越多,那么需要開(kāi)辟的空間越多,求和需要的長(zhǎng)整數(shù)的開(kāi)辟的空間也越多c經(jīng)驗(yàn)和體會(huì)在寫(xiě)程序中要規(guī)范書(shū)寫(xiě),這樣便于檢查錯(cuò)誤的出現(xiàn)所在的地方;寫(xiě)代碼要前后照應(yīng),前面的變量和函數(shù)在后面使用時(shí)可能要對(duì)應(yīng),如果不注意,可能發(fā)生錯(cuò)誤;當(dāng)出現(xiàn)錯(cuò)誤時(shí),要大膽猜測(cè)各種出錯(cuò)的可能的原因,一種一種排除,一種一種嘗試,問(wèn)題可能解決。定義了指針就需要開(kāi)辟空間,否則會(huì)出錯(cuò);同時(shí)指針開(kāi)辟的空間單元要初始一定的值, 否則會(huì)出現(xiàn)不需要的數(shù)據(jù);5用戶使用說(shuō)明 本程序使用簡(jiǎn)單,運(yùn)行程序后出現(xiàn)了input the first

12、data,input negative data exit的提示,告訴用戶輸入第一個(gè)長(zhǎng)整數(shù),4個(gè)數(shù)字一段輸入,要想結(jié)束輸入直接輸入一個(gè)負(fù)數(shù)就可以結(jié)束了;如需要輸入1011 1011時(shí);input the first data,input negative data exit10111011-1接著出現(xiàn)input the second data,input negative data exit的提示,告訴用戶輸入第2個(gè)長(zhǎng)整數(shù),4個(gè)數(shù)字一段輸入,要想結(jié)束輸入直接輸入一個(gè)負(fù)數(shù)就可以結(jié)束了;如需要輸入1011 1011時(shí);input the second data,input negative dat

13、a exit10111011-10102 2325 4344 2121輸入完以后,程序直接顯示運(yùn)行結(jié)果,按回車(chē)就退出程序.6測(cè)試結(jié)果7附錄#include<stdio.h>#include<malloc.h>typedef struct linknodeint data;/*節(jié)點(diǎn)的值*/struct linknode *left,*right;/*左指針和右指針*/dnode;dnode *r1,*r2,*r3,*head1,*head2,*head3;dnode *head_temp,*rear_temp;/*head1為第1個(gè)數(shù)的頭指針,r1為 為第1個(gè)的尾指針*/

14、*head2為第2個(gè)數(shù)的頭指針,r2為 為第2個(gè)的尾指針*/*head3為結(jié)果的頭指針,r3為結(jié)果的尾指針*/*head_temp為臨時(shí)數(shù)的頭指針,rear_temp為臨時(shí)數(shù)的尾指針*/*產(chǎn)生一個(gè)長(zhǎng)整數(shù)*/dnode* creat()dnode *head,*p,*s;/*head為頭指針,p和s為臨時(shí)指針*/int x,cycle=1;/*x為輸入的數(shù)據(jù),cycle為是否繼續(xù)輸入的標(biāo)志*/head=(dnode*)malloc(sizeof(dnode);p=head;/*指向頭*/while(cycle)scanf("%d",&x);/*輸入數(shù)據(jù)*/if(x&g

15、t;=0)/*輸入正數(shù)才有效*/s=(dnode*)malloc(sizeof(dnode);s->data=x;p->right=s;s->left=p;p=s;/*采用的是頭插法*/else cycle=0;/*輸入負(fù)數(shù)就退出*/head=head->right;/*第一個(gè)頭沒(méi)有用到*/head->left=NULL;p->right=NULL;return head;dnode *rear(dnode *head)/*根據(jù)一個(gè)數(shù)的頭節(jié)點(diǎn),得到尾節(jié)點(diǎn),并得到這個(gè)數(shù)的段數(shù)*/dnode *p;p=head;while(p->right)/*向右移*/

16、 p=p->right;return p;void input_and_init()/*初始化2個(gè)數(shù)據(jù)的大小*/*符號(hào)變?yōu)閷?duì)應(yīng)的0或1*/printf("input the first data,input negative data exitn"); head1=creat(); /*產(chǎn)生第一個(gè)數(shù),得到它的頭指針*/ r1=rear(head1); /*得到第一個(gè)數(shù)的尾指針和*/*符號(hào)變?yōu)閷?duì)應(yīng)的0或1*/ printf("input the second data,input negative data exitn"); head2=creat(

17、); /*產(chǎn)生第2個(gè)數(shù),得到它的頭指針*/ r2=rear(head2); /*得到第一個(gè)數(shù)的尾指針和段數(shù)*/*打印一個(gè)數(shù)*/void print(int data)if(data>=1000)/*含有4個(gè)數(shù)字*/ printf("%d",data);else if(data>=100)/*含有3個(gè)數(shù)字,補(bǔ)1個(gè)零*/ printf("0%d",data);else if(data>=10)/*含有2個(gè)數(shù)字,補(bǔ)2個(gè)零*/ printf("00%d",data);else/*含有1個(gè)數(shù)字,補(bǔ)3個(gè)零*/ printf(&q

18、uot;000%d",data);/*顯示一個(gè)結(jié)果的長(zhǎng)整數(shù),從后向前移*/void display(dnode *rear)dnode *p; p=rear;while(p)print(p->data); printf(" "); p=p->left; /*向左移*/printf("n");dnode *find_sum2(dnode *r1,dnode *r2)/*得到2個(gè)正數(shù)的和*/dnode *head,*p,*s,*p1,*p2;/*head為頭指針,p,s為臨時(shí)指針,p1指向第1個(gè)數(shù)并向左移動(dòng),p2指向第2個(gè)數(shù)并并向左移動(dòng)

19、*/ int inc=0,sum=0,f1=0,f2=0;/*inc為進(jìn)位,sum為和,f1為第一個(gè)數(shù)是否結(jié)束,f2為第一個(gè)數(shù)是否結(jié)束*/head=(dnode*)malloc(sizeof(dnode);p=head;/*開(kāi)辟空間*/p1=r1;/*指向第一個(gè)數(shù)的尾*/p2=r2;/*指向第二個(gè)數(shù)的尾*/while(p1!=NULL&&p2!=NULL)/*2個(gè)數(shù)的某一段都不為空時(shí) */sum=p1->data+p2->data+inc;/*和為2個(gè)數(shù)之和加進(jìn)位*/inc=0;/* 進(jìn)位回0*/if(sum>=10000)/*當(dāng)超過(guò)2位數(shù)的大小時(shí),和減去10

20、000,并進(jìn)位*/sum=sum-10000;inc=1;/*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/s=(dnode*)malloc(sizeof(dnode);s->data=sum;p->right=s;s->left=p;p=s;/*2個(gè)數(shù)都向左移*/p1=p1->left;p2=p2->left;if(p1=NULL&&p2=NULL)if(inc=1)/*當(dāng)2個(gè)數(shù)據(jù)都完了,但是存在進(jìn)位時(shí),新建一個(gè)節(jié)點(diǎn),值就是進(jìn)位*/s=(dnode*)malloc(sizeof(dnode); s->data=1;p->right=s;s->le

21、ft=p;p=s;while(p1!=NULL)/*當(dāng)?shù)?個(gè)數(shù)空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/f1=1;s=(dnode*)malloc(sizeof(dnode);sum=p1->data+inc;inc=0;if(sum>=10000)sum=sum-10000;inc=1;s->data=sum;p->right=s;s->left=p;p=s;/*第1個(gè)數(shù)都向左移*/p1=p1->left;/*當(dāng)?shù)?個(gè)數(shù)據(jù)完了,但是存在進(jìn)位時(shí),新建一個(gè)節(jié)點(diǎn),值就是進(jìn)位*/if(f1=1&&inc=1&&!p1)

22、s=(dnode*)malloc(sizeof(dnode);s->data=1;p->right=s;s->left=p;p=s;/*當(dāng)?shù)?個(gè)數(shù)空,第2個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/while(p2!=NULL)f2=1;s=(dnode*)malloc(sizeof(dnode);sum=p2->data+inc;inc=0;if(sum>=10000)sum=sum-10000;inc=1;s->data=sum;p->right=s;s->left=p;p=s;p2=p2->left;/*第2個(gè)數(shù)都向左移*/*當(dāng)?shù)?/p>

23、2個(gè)數(shù)據(jù)完了,但是存在進(jìn)位時(shí),新建一個(gè)節(jié)點(diǎn),值就是進(jìn)位*/if(f2=1&&inc=1)s=(dnode*)malloc(sizeof(dnode);s->data=1;p->right=s;s->left=p;p=s;head=head->right;head->left=NULL;p->right=NULL;return head;/*返回頭節(jié)點(diǎn)*/dnode * find_sub_mult(dnode * r1,int data ,int i)/*將r1指向的數(shù)全乘于data,并向左位移i段*/dnode *head,*p,*s,*rr

24、;/*head為頭指針,p,s為臨時(shí)指針,rr為尾指針*/int k,inc=0;/*k為循環(huán)用的,inc為進(jìn)位*/long sum=0; /*求和*/rr=r1;head=(dnode*)malloc(sizeof(dnode);p=head;/*開(kāi)辟空間*/*先將需要位移的段數(shù)全用0補(bǔ)齊*/if(i!=0)for(k=1;k<=i;k+)s=(dnode*)malloc(sizeof(dnode);s->data=0;p->right=s;s->left=p;p=s;while(rr!=NULL)/* 當(dāng)rr沒(méi)有到頭時(shí)*/s=(dnode*)malloc(sizeo

25、f(dnode);sum=rr->data*data+inc;if(sum>10000)inc=sum/10000;/*得到和的高4位*/s->data=sum-inc*10000;/*值為低4位的值*/ elses->data=sum;/*直接給值*/inc=0;p->right=s;s->left=p;p=s;/*左移*/rr=rr->left;if(inc!=0)/*如果還有進(jìn)位,就需要新建一個(gè)節(jié)點(diǎn)*/s=(dnode*)malloc(sizeof(dnode);s->data=inc;p->right=s;s->left=p;

26、p=s;head=head->right;head->left=NULL;p->right=NULL;/*返回頭指針*/return head;/*由一個(gè)數(shù)的尾指針得到頭指針*/dnode * return_head(dnode *rear)dnode *p;p=rear;while(p->left)p=p->left;return p;/*由一個(gè)數(shù)的頭指針得到尾指針*/dnode * return_rear(dnode *head)dnode *p;p=head;while(p->right)p=p->right;return p;/*將一個(gè)數(shù)的數(shù)據(jù)前后交換*/dnode * tansfer_rear2(dnode *rear_temp)dnode *h

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論