链表的翻转,介绍单链表如何翻转。
一个链表如下
翻转后变成如下
在此我们采用头插入与头删除结合的方法,头插入和头删除参考 Linux学习(十):数据结构--表
我们用old表示无头的旧链表,head是新链表的表头。旧链表头删除,新链表头插入即可完成链表的翻转,
代码的实现
//改:数据翻转
int linklist_reverse(linknode_t *head)
{
linknode_t *old = head->next; //old :无头的旧链表
linknode_t *temp = NULL; //temp:临时记录要删除的节点
head->next = NULL; //head:新链表的头节点
while(old != NULL)
{
temp = old;
old = old->next; //头删法
temp->next = head->next;
head->next = temp; //头插入
}
return 0;
}