例:设head指向一非空单向链表,将该单向链表逆置(不产生新链表)
ElemSN * ReverseNode(ElemSN *h)
{
ElemSN *p,*q;
p=h->next;
h->next=NULL;
while(p)
{
q=p;
p=p->next;
q->next=h;
h=q;
}
return h;
}
例:设head指向一个非空单向链表,将所有奇数值结点,移动到偶数值结点前。
①从第二个结点开始,奇数结点进行头插,偶数结点继续往下判断
ElemSN * MoveOddNode(ElemSN *h)
{
ElemSN *p=h->next,*q=h;
while(p)
{
if(p->data%2==1)//奇数结点进行头插
{
q->next=p->next;
p->next=h;
h=p;
p=q->next;
}
else
{
q=p;
p=p->next;
}
}
return h;
}
②从第一个结点开始,结点值:奇数往hn尾插,偶数往hm尾插。然后将两链表合并