文章
103
粉丝
0
获赞
0
访问
3.6k
(1)
(2)
struct ListNode {
char data;
ListNode* next;
};
/**
* @brief 找出两个单链表共同后缀的起始位置
* @param str1 指向第一个链表的头节点(带头结点)
* @param str2 指向第二个链表的头节点(带头结点)
* @return 指向共同后缀起点的节点,如果无共同后缀返回nullptr
*/
ListNode* findSharedSuffix(ListNode* str1, ListNode* str2) {
// 1. 计算两个链表的长度(不含头结点)
int len1 = 0, len2 = 0;
ListNode* p1 = str1->next;
ListNode* p2 = str2->next;
while (p1) {
len1++;
p1 = p1->next;
}
while (p2) {
len2++;
p2 = p2->next;
}
// 2. 重新指向链表的起始点
p1 = str1->next;
p2 = str2->next;
// 3. 长链表先向后移动差值
if (len1 > len2) {
int diff = len1 - len2;
for (int i = 0; i < diff; ++i)
p1 = p1->next;
} else {
int diff = len2 - len1;
for (int i = 0; i < diff; ++i)
...
登录后发布评论
暂无评论,来抢沙发