单链表倒置算法和二叉树的遍历

void reverse(list *head)

{

list *p, *q;

p = head->next;//p指向当前正在处理的节点

q = p->next;//tmp指向尚未被处理的第一个节点

p->next = NULL;//原单链表第一个节点将成为倒置后最后一个节点

head->next = p;//插入单链表表头后面

p = q;//开始处理接下来的节点们

while(p) {

q = p->next;

p->next = head->next;

head->next = p;

p = q;

}

}

(头结点不算,从第一个节点开始)

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

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


方法二:

LinkList reverse(LinkList L)//单链表的倒置算法

{

LNode*p,*q;

p=L->next;

L->next=NULL;

while(p)

{

q=p;

p=p->next;

q->next=L->next;

L->next=q;

}

returnL;

}

算法之二叉树各种遍历 - 落日小屋 - 博客频道 - CSDN.NET

关于二叉树的几种遍历方法 - 技术为王 - 博客频道 - CSDN.NET

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容