菜鸟学习数据结构算法之路之翻转链表与利用递归翻转链表
来源:互联网 发布:网络市场调研的优势 编辑:程序博客网 时间:2024/06/09 17:15
说起链表,我觉得算是挺难的吧,指针域啊,数据域,傻傻分不清楚,不过我觉得学习数据结构这一方面,自己动动手画一画其实就很清楚了,链表由数据域与指针域组合而成,两个元素,指针域呢负责连接下一个结点,数据域负责存储数据,我觉得想要理解链表,就必须知道它的指针域是如何指向下一个结点的,其实也很简单,动手画,然后跟上画出来的图就知道代码怎么写了。。
以下放出代码,个人觉得,本人的注释有点笨拙,希望看到的过客不要介意,可能难以理解,不过我相信各位如果动手画一画链表,再加以代码注释应该能理解
//翻转链表struct node{ int payload; node *next;};//递归翻转链表node* reverse_recursive(node *head){ if (head == nullptr || head->next == nullptr){ //判断头节点 return head; } node* second = head->next; //新建头节点的下一个结点 second node* new_head = reverse_recursive(second); //递归调用,使second变为新的头节点 second->next = head; //新的头节点的指针域与 老的头节点连接 head->next = nullptr; //老的头节点指为null return new_head;}//非递归翻转链表node *reverse(node* head){ if (head == nullptr || head->next == nullptr){ return head; } node* p = head->next; node* p_p = head; //p_p为头节点 head->next = nullptr; //把头节点的下一个节点赋为空,如果是空就不会进入循环,说明翻转完了 while (p != nullptr){ node* p_next = p->next; //p的下一个结点设置为p_next p->next = p_p; //把p指针指向了 p_p,建立连接 p_p = p; //调换位置,把结点全部向前移动 p = p_next; } return p_p;}int main(void){ node *head = nullptr; //添加十个节点 for (int i = 0; i < 10; i++){ node *new_node = new node; new_node->payload = i * 10; new_node->next = head; head = new_node; } //递归调用翻转函数 //head = reverse_recursive(head); //非递归调用 head = reverse(head); //输出链表 node *iterator = head; while (iterator){ cout << iterator->payload << endl; iterator = iterator->next; } system("pause"); return 0;}
再放一张画的图吧,,图有点抽象,还是希望各位能自己动手画一画,希望各位能谅解…
阅读全文
0 0
- 菜鸟学习数据结构算法之路之翻转链表与利用递归翻转链表
- 菜鸟学习数据结构算法之路之翻转数组
- 链表翻转的递归和非递归算法
- 剑指Offer算法实现之十六:翻转链表
- 从链表翻转的递归算法到递归与栈的关系
- 算法学习-链表的部分翻转
- 链表基础之翻转,删除
- LintCode之35 翻转链表
- 【经典算法】:链表翻转
- 递归地翻转一个链表
- 链表翻转非递归实现
- 翻转链表-递归和迭代
- 菜鸟学习数据结构算法之路之约瑟夫环问题(循环链表)
- 菜鸟学习数据结构之链表
- 数据结构与算法学习之链表
- 无情链表的创建,,翻转翻转
- 数据结构示例之数组翻转
- 链表翻转的递归和非递归实现
- 使用python将得到whois信息,存入数据库(分片法)
- “躲避球”体育游戏《Sparc》登陆Rift和Vive,可以和PS用户一起玩了【附游戏视频】
- 写给未来的自己
- NOIP2017提高总结
- 西安电子科技大学物理试验成绩爬取
- 菜鸟学习数据结构算法之路之翻转链表与利用递归翻转链表
- 调用WebService接口
- Android属性动画完全解析(二):ValueAnimator和ObjectAnimator的高级用法
- Java API 写 Hive Orc文件
- (一)Spring-boot 自动配置
- BZOJ3521: [Poi2014]Salad Bar
- 全选、全不选、反选
- python socket通信 以16进制的数据进行传递与解析
- csdn如何转载文章