单链表倒置算法

来源:互联网 发布:排序的sql语句 编辑:程序博客网 时间:2024/05/26 16:02

先上代码。

void reverse(list *head){     list *p, *tmp;          p = head->next;  //p指向当前正在处理的节点     tmp = p->next;  //tmp指向尚未被处理的第一个节点     p->next = NULL;  //原单链表第一个节点将成为倒置后最后一个节点     head->next = p;  //插入单链表表头后面     p = tmp;  //开始处理接下来的节点们     while (p) {           tmp = p->next;           p->next = head->next;           head->next = p;           p = tmp;     }}

思想是,遍历整个链表的同时,将正在访问的节点插入到链表头部。

这样,当遍历结束后,同时完成了链表的倒置。