开发者社区> goodboy_heyang> 正文

Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现

简介:
+关注继续查看

Reverse反转算法

复制代码
 1 #include <iostream>
 2  3 using namespace std;
 4 //交换的函数  5 void replaced(int &a,int &b){
 6 int t = a;
 7 a = b;
 8 b = t;
 9 }
10 //反转 11 void reversed(int a[],int length){
12 int left = 0;
13 int right = length - 1;
14 while (left < right) {
15  replaced(a[left], a[right]);
16 left++;
17 right--;
18  }
19 }
20 void output(int a[],int length)
21 {
22 for (int i = 0; i<length; i++) {
23 cout << a[i] << " ";
24  }
25 }
26 int main()
27 {
28 int a[] = {1,2,3,4,5,6,7,8,9};
29 output(a, 9);
30 cout << endl;
31 reversed(a, 9);
32 output(a, 9);
33 }
复制代码

斐波那契数列

复制代码
 1 #include <iostream>
 2  3 using namespace std;
 4  5 //斐波那契数列  6 int qiebona(int a)
 7 {
 8 //也可以用if语句  9 switch (a) {
10 case 1:
11 case 2:
12 return a;
13 break;
14 15 default:
16 return qiebona(a-1)+qiebona(a-2);
17 break;
18  }
19 }
20 int main()
21 {
22 //验证斐波那契函数 23 cout << qiebona(1) << endl;
24 //然后打印前n个数的斐波那契数列 25 for (int i = 1; i <= 10; i++) {
26 cout << qiebona(i) << " ";
27  }
28 return 0;
29 }
复制代码

Reverse反转单链表算法

复制代码
 1 #include <iostream>
 2  3 using namespace std;
 4 //1首先这个数据节点中只有一个指针作为成员数据,所以这是一个单链表的节点结构  5 struct node{
 6 int payload;
 7 node* next;
 8 };
 9 //2对于一个长的单链表的操作,我们只能这个长链表的第一个节点或者说是第一个指针指向的节点开始操作 10 node* reversed(node* first){
11 //3如果链表为空或者只有一个,那就返回它自己呗 12 if (first->next == nullptr || first == nullptr) {
13 return first;
14 }//4如果有下一个实例,就
15 //5获取下一个实例 16 node* second = first -> next;
17 //这里就是递归, 18 node* new_head = reversed(second);
19 /*6 将下一个节点内部指针的方向反转,但是在反转之前,也要获取这下一个节点原来指向的下下个节点,也就是说,在这个操作之前,要在通过下一个节点获取下下一个节点.
20  假设在前一步加:node* third = second->next;但是这个简单的思路有局限性,当链表很长的时候,后面会重复这个获取下一个节点的过程,这样肯定是不明智的,因为链表的个数不确定,你就不知道要写多少代码,所以最好的办法就是通过递归重复执行前面相同的步骤(即算法)*/ 21 second -> next = first;
22 first -> next = nullptr;
23 return new_head;//7由于递归的特性,最后的return返回值会往前传递到最前面 24 }
复制代码

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
浅析算法的时间复杂度和空间复杂度 (C++/python双语实例)
浅析算法的时间复杂度和空间复杂度 (C++/python双语实例)
20 0
C++11 用next_permutation算法计算排列组合数
C++11 用next_permutation算法计算排列组合数
29 0
“探索C++非质变算法:如何更高效地处理数据“
“探索C++非质变算法:如何更高效地处理数据“
73 0
C++ STL容器和算法:详解和实例演示
C++ STL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。
38530 0
Acwing 算法基础课 c++模板整理(附python语法基础题)(三)
Acwing 算法基础课 c++模板整理(附python语法基础题)
40 0
Acwing 算法基础课 c++模板整理(附python语法基础题)(二)
Acwing 算法基础课 c++模板整理(附python语法基础题)
68 0
Acwing 算法基础课 c++模板整理(附python语法基础题)(一)
Acwing 算法基础课 c++模板整理(附python语法基础题)
37 0
+关注
goodboy_heyang
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
阿里技术参考图册-算法篇
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多