请编写一个函数int list_revert(SLIST_S *listA, SLIST_S *listB),将传入的单向链表listA反转后返回listB,其中SLIST_S定义如下: typedef struct SLIST{ …… struct SIG_LIST *next; }SLIST_S;
时间: 2024-03-25 07:38:27 浏览: 38
List-LinkedList 单链表就地反转
4星 · 用户满意度95%
好的,我来为您编写这个函数。
```c
SLIST_S* list_revert(SLIST_S* listA, SLIST_S* listB) {
if (listA == NULL) {
return listB;
}
SLIST_S* next = listA->next;
listA->next = listB;
return list_revert(next, listA);
}
```
这个函数使用递归的方式实现单向链表的反转,每次将当前节点的next指针指向反转后的上一个节点。递归结束的条件是当前节点为NULL,返回反转后的头节点listB。
阅读全文