通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环 (2)

CMakeLists.txt相关代码如下:

# CMakeList.txt: DataStructure 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。 # cmake_minimum_required (VERSION 3.8) # 将源代码添加到此项目的可执行文件。 add_executable (circList "main.cpp" "circList.h" ) # TODO: 如有需要,请添加测试并安装目标。

main.cpp相关代码如下:

#include<iostream> #include "circList.h" using namespace std; template<class T> void Josephus(CircList<T> &Js,int n,int m) { CircLinkNode<T>* p = Js.getHead(); CircLinkNode<T>* pre = NULL; int i, j; for (i = 0; i < n - 1; i++) { for (j = 0; j < m-1; j++) { pre = p; p = p->link; } cout << "出列的是:" << p->data << endl; pre->link = p->link; Js.Remove(p->data,p,pre); p = pre->link; cout << "出列后的队列为:" << endl; Js.output(); cout << "当前元素为:" << p->data << endl; } } int main() { CircList<int> clist; int i, n, m; cout << "输入游戏者人数和报数间隔:"<<endl; cin >> n >> m; for (i = 1; i <= n; i++) { clist.Insert(i,i); } Josephus(clist, n, m); }

程序运行后效果如下:

通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环

4.总结

本着Talk is cheap. Show me the code原则,代码实现不做过多解释。

通过该例子,可以学习:

在Visual Studio中搭建CMake项目;

在CMake项目中增加“可执行文件”;

掌握struct定义;class定义;template class 、function定义;构造函数;析构函数;

通过模板库实现约瑟夫环问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwypfp.html