逆置单链表
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;
}

浙公网安备 33010602011771号