文章目录

有一个单链表,要求写出此单链表的逆置链表。

typedef struct node
{
int data;
struct node *next;
}node;

node reverse(node head)
{
//如何实现,请给出说明,谢谢!
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
}
文章目录