单向链表-移动

来源:互联网 发布:linux中怎么创建文件 编辑:程序博客网 时间:2024/06/05 05:39

例:设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尾插。然后将两链表合并
原创粉丝点击