题目要求:将输入的二进制数转换为十进制数,而二进制数的表现形式是输入的链表的多个节点值
解法思路:利用二进制转换为十进制的通解:第i位值*2^(i-1)之和
具体实施:为求某位值在链表中的位序,我首先求出了输入链表的长度,并且引入了一个新的结构体指针做遍历链表用途
然后再遍历一次求结果,因为不想再引入新的指针来遍历,因此直接就用head指针了,虽然这样会把链表本身改变,但是以后也用不到了不是嘛嘿嘿(下次一定会改~)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int getDecimalValue(struct ListNode* head){
int len=0,ans=0;
struct ListNode* cur=head;
while(cur){
cur=cur->next;
len++;
}
while(head&&len!=0){
ans+=head->val*pow(2,len-1);
head=head->next;
len--;
}
return ans;
}