逆置单链表

node *reverse(node *head)

{

    node *p, *q, *t;

    p = head->next;//指向第一个节点

    t = q = p->next;//指向第二个节点,如果有的话。没有则为空。

    p->next = NULL;//第一个节点逆置之后,变成最后一个节点,它的next为空。

    //根据t是否为空,实现逆置。

    //以下代码实现相邻两个节点之间指向转换。即后一节点指向前一个节点。

    while(t != NULL)

    {

        t =q->next;//向后移一步,记录右边指针

        q->next =p;//指针反转(中间的指针指向左)

        p = q;

        q = t;

    }

 

    head->next = p;

}

 

 

 

typedef struct node

{

int data;

struct node *next;

}node;

node reverse(node head)

{

//如何实现,请给出说明,谢谢!

}

node *reverse(node *head)

{

node *p, *q, *t;

p = head ->next; //指向第一个节点 

t = q = p ->next; //指向第二个节点,如果有的话。没有则为空。 

p ->next =NULL; //第一个节点逆置之后,变成最后一个节点,它的next为空。 

//根据t是否为空,实现逆置。 

//以下代码实现相邻两个节点之间指向转换。即后一节点指向前一个节点。 

while(t !=NULL)

{

t = q ->next;

q ->next = p;

p = q;

q = t;

}

head ->next = p;

return head;

}

 

posted @ 2015-09-26 22:43  Uncle_Nucky  阅读(102)  评论(0)    收藏  举报