😎题目

😉解法
😊1.位运算
int getDecimalValue(struct ListNode* head) {struct ListNode *cur = head;int sum = 0;while(cur){sum = sum << 1 | cur->val;cur = cur->next;}return sum;
}
😁2.栈
#define MAX 100
typedef struct stack{int data[MAX];int top;
}Stack,*PtrStack;
PtrStack InitStack()
{PtrStack S = (PtrStack)malloc(sizeof(Stack));S->top = -1;return S;
}
void push(PtrStack S,int data)
{if(S->top == MAX-1)return ;S->data[++S->top] = data;
}
int pop(PtrStack S)
{if(S->top == -1)return -1;return S->data[S->top--];
}int getDecimalValue(struct ListNode* head) {int sum = 0;PtrStack S = InitStack();struct ListNode *cur = head;while(cur){push(S,cur->val);cur = cur->next;}int i=0;while(S->top!=-1){sum += pow(2,i)*pop(S);i++;}return sum;
}