科目 | 内容 | 补充 | 时间 |
---|---|---|---|
数学 | 第七次直播(11-15、79) |
给定两个单链表,编写算法找出两个链表的公共节点
LinkList Search_1st_common(LinkList &L1, LinkList &L2)
{
LNode *LongList, *ShortList;
int len1 = Length(L1);//计算长度
int len2 = Length(L2);
int dist;//两个链表长度差
if (len1 > len2)
{
LongList = L1->next;
ShortList = L2->next;
dist = len1 - len2;
}
if (len2 > len1)
{
LongList = L2->next;
ShortList = L1->next;
dist = len2 - len1;
}
while (dist--)
LongList = LongList->next;
while (LongList != NULL)
{
if (LongList == ShortList)
return LongList;
else
{
LongList = LongList->next;
ShortList = ShortList->next;
}
}
return NULL;
}
9.给定一个带表头节点的单链表,设head为头指针,及诶单结构为data,next
bool output_increase(LinkList &L)
{
if (L == NULL)
return false;
LNode *p, *pre, *r;
while (L->next != NULL)
{
pre = L;
p = pre->next;
while (p->next != NULL)
{
if (p->next->data < pre->next->data) //此处用的是p->next比较,也就可以用pre直接指向最小节点的前驱
pre = p;
p = p->next;
}
printf("%d ", pre->next->data);
r = pre->next; //r指向最小节点
pre->next = r->next;
free(r);
}
free(L);
return true;
}