自己网站wordpress主题怎么,房地产开发公司有哪些部门,网站源码 免费下载,格力网站建设需求分析第一个是测试用例代码#xff0c;测试的是两个带头的逆序链表相加#xff0c;并且有反转操作
但是题目要求的是不带头链表直接相加#xff0c;不需要逆转#xff0c;输出结果也是逆序的#xff0c;
题解放在第二个代码中
#includestdio.h
#includestdlib.h…第一个是测试用例代码测试的是两个带头的逆序链表相加并且有反转操作
但是题目要求的是不带头链表直接相加不需要逆转输出结果也是逆序的
题解放在第二个代码中
#includestdio.h
#includestdlib.h
typedef struct ListNode {int val;struct ListNode* next;
}List;List* reverse(List* L) {List* p L;List* q NULL;while (p ! NULL) {List* temp p-next;p-next q;q p;p temp;}List* head (List*)(malloc)(sizeof(List));head-next q;List* temp head;while (temp-next-next ! NULL) {temp temp-next;}temp-next NULL;return head;
}
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {List*L1reverse(l1);L1-val 0;List*L2reverse(l2);L2-val 0;List* L3 (List*)(malloc)(sizeof(List));L3-next NULL;L3-val 0;int flag 0;while (L1 ! NULL || L2 ! NULL) {List* temp (List*)(malloc)(sizeof(List));temp-next NULL;temp-val 0;if (L1) {temp-val L1-val;L1 L1-next;}if (L2) {temp-val L2-val;L2 L2-next;}if (flag 1) {temp-val 1;flag 0;}//进位if (temp-val 10) {temp-val temp-val % 10;flag 1;}//大于10进位List* cur L3;while (cur-next ! NULL) {cur cur-next;}cur-next temp;if (L1 NULL L2 NULL flag 1) {List* digital (List*)(malloc)(sizeof(List));digital-val 1;digital-next NULL;temp-next digital;}}L3-next-val 0;return reverse(L3-next);
}
List* makeList() {List* L (List*)(malloc)(sizeof(List));L-next NULL;int num;while (1) {scanf(%d, num);if (num 0) {break;}List* temp (List*)(malloc)(sizeof(List));temp-next NULL;temp-val num;List* p L;while (p-next ! NULL) {p p-next;}p-next temp;}return L;
}
void print_List(List* L) {L L-next; // 跳过头节点while (L ! NULL) {printf(%d , L-val);L L-next;}printf(\n);
}int main() {List* L1 makeList();printf(打印L1\n);print_List(L1);List* L3reverse(L1);List* L2 makeList();printf(打印L2\n);print_List(L2);List* L4 reverse(L2);printf(打印L3\n);print_List(L3);printf(打印L4\n);print_List(L4);List* L5 addTwoNumbers(L3, L4);printf(打印L5\n);print_List(L5);
} struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode* L3 (struct ListNode*)(malloc)(sizeof(struct ListNode));L3-next NULL;L3-val0;int flag 0;while (l1 ! NULL || l2 ! NULL) {struct ListNode* temp (struct ListNode*)(malloc)(sizeof(struct ListNode));temp-next NULL;temp-val 0;if (l1) {temp-val l1-val;l1 l1-next;}if (l2) {temp-val l2-val;l2 l2-next;}if (flag 1) {temp-val 1;flag 0;}//进位if (temp-val 10) {temp-val temp-val % 10;flag 1;}//大于10进位struct ListNode* cur L3;while (cur-next ! NULL) {cur cur-next;}cur-next temp;if (l1 NULL l2 NULL flag 1) {struct ListNode* digital (struct ListNode*)(malloc)(sizeof(struct ListNode));digital-val 1;digital-next NULL;temp-next digital;}}return (L3-next);
}