2的4000次幂;

发布时间:2016-12-7 18:35:37 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"2的4000次幂;",主要涉及到2的4000次幂;方面的内容,对于2的4000次幂;感兴趣的同学可以参考一下。

最近在看《数据结构与算法分析——C语言描述》 Mark Allen Weiss著, 冯舜玺 译。 第三章习题3.9: 计算在2的4000次幂中数字0到9的分布; 由于前面的习题都是有关链表的内容,所以看到作者把这样一道题放在这样的位置,很难不理解作者的意图了。 下面是我用链表实现的。 代码主要的内容就是:  1、遍历链表,把所有数都乘以2; 2、遍历链表,处理所有的大于9的数,下一个节点的value加1,即相当于向高位进1,同时本节点的value减去10; 下面是代码: node *twos_power( int power ) { int i; node *poly; node *head; poly = ( node * )malloc( sizeof ( node ) ); if( poly == NULL ){ perror( "malloc:" ); exit( -1 ); } /* poly->coef 表示个位,十位, 百位...*/ poly->coef = 1; poly->value = 2; poly->next = NULL; head = poly; for( i = 1; i < power; i++ ){ poly = head; /*先将目前链表中的所有数都乘以2,*/ while( poly != NULL ){ poly->value *= 2; poly = poly->next; } /*再将各个位中大于10的数向上进位 */ poly = head; while( poly != NULL ){ int multi_value; multi_value = poly->value; if( multi_value > 9 ){ if( poly->next == NULL ){ node *temp; temp = ( node * )malloc( sizeof( node ) ); assert( temp != NULL ); temp->value = 1; temp->coef = poly->coef + 1; temp->next = NULL; poly->next = temp; } else poly->next->value += 1; poly->value -= 10; } poly = poly->next; } } return head; }

上一篇:JS“缺少标识符 字符串或数字”错误
下一篇:基于HTML5的超级玛丽游戏demo

相关文章

关键词: 2的4000次幂;

相关评论