1.链表合并
int main()
{
node *phead1 = NULL;//头结点不分配内存
phead1 = addback(phead1, 2); //addback是在尾部添加节点,也就是将2插入怕head1链表的尾部。
phead1 = addback(phead1, 4);
phead1 = addback(phead1, 6);
phead1 = addback(phead1, 8);
phead1 = addback(phead1, 10);
phead1 = addback(phead1, 12);
phead1 = addback(phead1, 14);
node *phead2 = NULL;//头结点不分配内存
phead2 = addback(phead2, 1);
phead2 = addback(phead2, 3);
phead2 = addback(phead2, 5);
phead2 = addback(phead2, 7);
phead2 = addback(phead2, 9);
node *phead = NULL;//123456
node *p1 = phead1;
node *p2 = phead2;
//1 3 5 7 9
//2 4 6 8 10
while (p2!=NULL ||p1!=NULL)
{
if (p1!=NULL && p2!=NULL) //对比两个数据
{
if (p1->data < p2->data)
{
phead = addback(phead, p1->data);
p1 = p1->pNext;
}
else
{
phead = addback(phead, p2->data);
p2 = p2->pNext;
}
}
else
{
while (p1!=NULL)//尾部添加
{
phead = addback(phead, p1->data);
p1 = p1->pNext;
}
while (p2 != NULL)//尾部添加
{
phead = addback(phead, p2->data);
p2 = p2->pNext;
}
}
}
system("pause");
}
2.链表取中间值
node * getmid(node *phead)
{
if (phead==NULL ||phead->pNext==NULL)
{
return phead;
}
else
{
node *p1=phead;
node *p2=phead;
while (p2->pNext!=NULL)// //0->data
{
p1 = p1->pNext;//前进一步
p2 = p2->pNext;//2步
if (p2->pNext!=NULL)//提前结束
{
p2 = p2->pNext;
}
}
return p1;
}
}