题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

struct ListNode*  overturn(struct ListNode* head1){//翻转链表
	struct ListNode* a1,*a2;
	a1=head1->next;
	a2=a1;
	if(a1->next){
		a2=a1->next;
	}
	head1->next=NULL;
	while(head1!=a2){
		a1->next=head1;
		head1=a1;
		a1=a2;
		if(a2->next!=NULL&&a2!=head1){
			a2=a2->next;
		}
	}
	return head1;
}
/**
 *
 * @param head1 ListNode类
 * @param head2 ListNode类
 * @return ListNode类
 */
struct ListNode* addInList(struct ListNode* head1, struct ListNode* head2 ) {
	if(head1==NULL){
		return head2;
	}
	if(head2==NULL){
		return head1;
	}
	struct ListNode* phead1,*phead2,*pphead=NULL,*HEAD;
	phead1=overturn(head1);
	phead2=overturn(head2);
	int NUM=0;
	while(phead1||phead2){
		int num=0;
		if(phead1){
			num+=phead1->val;
			phead1=phead1->next;
		}
		if(phead2){
			num+=phead2->val;
			phead2=phead2->next;
		}
		NUM+=num;
		if(pphead==NULL){
		HEAD=pphead=(struct ListNode*)malloc(sizeof(struct ListNode));
		pphead->next=NULL;
		}
		
		else {
		pphead->next=(struct ListNode*)malloc(sizeof(struct ListNode));
		pphead=pphead->next;
		pphead->next=NULL;
		}
		pphead->val=NUM%10;
		NUM/=10;
	}
	if(NUM){
	pphead->next=(struct ListNode*)malloc(sizeof(struct ListNode));
	pphead=pphead->next;
	pphead->next=NULL;
	pphead->val=NUM;
	}
	return overturn(HEAD);
}

全部评论

相关推荐

10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
10-14 10:56
已编辑
长沙学院 嵌入式软件开发
痴心的00后拿到了ssp:hr面挂了,无所谓了反正不去😃
点赞 评论 收藏
分享
oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务