本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下: struct listnode { int data; struct listnode *next; };
时间: 2023-04-25 07:01:27 浏览: 84
实现链表逆置的函数,可以按照以下步骤进行:
1. 定义一个指向链表头结点的指针p,一个指向链表当前结点的指针q,一个指向链表前一个结点的指针pre。
2. 将p指向链表头结点,q指向链表头结点的下一个结点,pre指向NULL。
3. 依次遍历链表中的每个结点,将q的next指针指向pre,然后将pre指向q,q指向q的next。
4. 当q指向NULL时,说明已经遍历完整个链表,此时将链表头结点的next指针指向pre,即可完成链表逆置。
下面是具体的代码实现:
struct listnode* reverseList(struct listnode* head) {
struct listnode *p = head, *q = head->next, *pre = NULL;
while (q != NULL) {
p->next = pre;
pre = p;
p = q;
q = q->next;
}
p->next = pre;
head->next = p;
return head;
}