成都网站建设四川推来客网络,wordpress登录界面图标,潮州哪里做网站,企业管理系统源码Practice makes perfect#xff01; 实战一#xff1a; 这个题由于我们不知道两个链表的长度我们也不知道它是否有相交的节点#xff0c;所以我们的方法是先求出两个链表的长度#xff0c;长度长的先走相差的步数#xff0c;使得两个链表处于同一起点#xff0c;两个链…Practice makes perfect 实战一 这个题由于我们不知道两个链表的长度我们也不知道它是否有相交的节点所以我们的方法是先求出两个链表的长度长度长的先走相差的步数使得两个链表处于同一起点两个链表在同时走如果两个链表节点的地址相等就存在相交的节点在放回第一个节点就可以了。 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* curAheadA;struct ListNode* curBheadB;int lenA1;int lenB1;while(curA-next){lenA;curAcurA-next;}while(curB-next){lenB;curBcurB-next;}struct ListNode* longlistheadA;struct ListNode* shortlistheadB;int kabs(lenA-lenB);if(lenAlenB){longlistheadB;shortlistheadA;}while(k--){longlistlonglist-next;}while(longlist!shortlist){longlistlonglist-next;shortlistshortlist-next;}return shortlist;}注意代码中的abs是求绝对值的函数。
实战二 我们用三个指针n1为空n2指向头结点n3指向头结点的下一个节点当我们遍历的时候我们头结点的下一个节点指向n1n1挪n2的位置n2挪到n3的位置遍历完成的时候n2和n3都为空指针而我们的n1则表示头结点现在的头结点却是原链表的尾节点。 struct ListNode* reverseList(struct ListNode* head) {if(headNULL){return NULL;}struct ListNode* n1,*n2,*n3;n1NULL;n2head;n3head-next;while(n2){n2-nextn1;n1n2;n2n3;if(n3){n3n3-next;}}return n1;
}方法来源于积累继续努力