链表的每个节点中的数据包含1/0,单遍历必须计算十进制等值
使用递归和非递归优选C?
NODE *decimalData(NODE *head)
{
int sum=0;
if(head->next==0)
{
if(head->data==0) return 0;
else return 1;
}
sum=decimalData(head->next);
return 2*sum;
}
答案 0 :(得分:0)
您没有说明在head->next
找到的数据位是否比当前head->data
更重要或更不重要。如果它更重要,那么问题就会有所简化:
unsigned decimalData(NODE *head)
{
unsigned sum = head->data;
if (head->next != NULL)
{
sum += (decimalData(head->next) << 1);
}
return sum;
}