Givenanon-negativenumberrepresentedasanarrayofdigits,plusonetothenumber.Thedigitsarestoredsuchthatthemostsignificantdigitisattheheadofthelist.

题意:一个非负的整数用数组的形式保存着。其中高位在a[0]。然后对这个数做加1操作,返回这个数组。

PS:原谅我又么有读懂题意---!

/***Returnanarrayofsize*returnSize.*Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*plusOne(int*digits,intdigitsSize,int*returnSize){inti;intindex=0;intcarry=0;intflag=1;//感觉是偷了个懒,只有全是9的时候才进1.。。。。。所以//只有个位数加1,不是每个都加,所以用flagfor(i=digitsSize-1;i>=0;i--){//不是每个都加1if(digits[i]+flag+index>9){digits[i]=0;index=1;if(i==0){carry=1;}}else{digits[i]=digits[i]+1;break;}flag=0;//printf("%d",digits[i]);}//这个值也得写明白,不然程序不知道???*returnSize=digitsSize+carry;if(carry){int*newdigits=(int*)malloc(sizeof(int)*digitsSize+1);newdigits[0]=1;for(i=1;i<digitsSize+1;i++){newdigits[i]=0;}returnnewdigits;}else{returndigits;}}

PS:迷迷糊糊就写完了。。。。。不执行。。。。。看了一下网上的程序貌似最后还要返回那个returnSize。。。。。。。。。。。。。。这才可以。

其实只有全是9的时候才会产生首位进位。。。。。。。。。。。