C++实训项目
C++课程实训大作业的Github仓库
猜数游戏
一次猜测12345678910111213141516171819202122use std::io;//prelude预导入fn main() { println!("猜数!"); println!("猜测一个数"); let mut foo =1 ;//加上mut后说明变量是可变的 let bar = foo;//rust里所有变量默认情况下是不可变的(immutable) let mut guess = String::new(); io::stdin().read_line(&mut guess).expect("无法读取行"); //stdin()返回一个std::io::Stdin实例,该实例代表标准输入 /*read_line()方法从标准输入读取一行输入,将读取到的字符串存储在guess变量中 *同时返回一个io::Result<usize>,该类型表示一个结果,其中usize表示读取的字节数 ...
创建rust项目
Hello,World!创建文件夹在cmd终端操作(首先打开即将创建的文件夹想要的路径) 1234mkdir projectscd projectsmkdir hello_worldcd hello_world 更改文件名 1mv hello_world.rs main.rs 编译并运行这个文件 12rustc main.rs.\main.exe hello world 1234fn main(){ println!("Hello World");//println!是一个rust macro(宏)} 运行rust程序之前必须先编译 .pdb文件包含调试信息 Hello,Cargo使用cargo创建项目 1cargo new hello_cargo 为发布构建 1cargo build --release 建议尽量使用cargo
哈希表探测(作业)
要求比较线性探测、平方探测和立方探测产生的冲突数量 代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#include<iostream>#include<cmath>#include<vector>#include<ctime>using namespace std;const int SIZE = 9001;//大于9000的最小素数const int MAX = 4500;//放入的数据数量int lCollision = 0;int qCollision = 0;int cCollision = 0;int main(){ vector<int>linear(SIZE,...
第七章 排序(冒泡、选排、插排、希尔排序)
冒泡排序1234567891011121314//冒泡排序,a为vector数组//从小到大排序for (int i = 0; i < a.size() - 1; i++){ for (int j = 0; j < a.size() - 1 - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } }} 选择排序12345678910111213141516//选择排序,a为vector数组int min;//存储每个循环里的最小值的下标for (int i = 0; i < a.size() - 1; i++){ min = i; for (int j = i+1; j < a.size(); j++) { if (a[j] < a[min])min = j; } if (min != i) { int...
第七章 排序(归并排序)
归并排序(Merge Sort)是一种分治算法,它将数组分成两半,递归地对每一半进行排序,然后再合并两个已排序的子数组得到最终的排序结果。 完整代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include<iostream>#include<vector>#include<cstring>#include<cstdio>using namespace std;template<typename Comp>void merge(vector<Comp>& a, vector<Comp>& tmpArray, int left,int right){ int mid, i, j; int k, l, target; mid =...
第七章 排序(桶排序)
要求对输入的字符串进行排序 可变字符串的基数排序代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#include<iostream>#include<vector>#include<cstring>#include<cstdio>using namespace std;/** 对String类对象的数组进行基数排序* 假设全为ASCII码* 并设所有字符串的长度都以maxLen为界*/void radixSort(vector<string>& arr, int maxLen){ const int BUCKETS = 256;//把字符看作256进制的数 vector<vector<string>> wordsByLength(maxLen +...
第七章 排序(快排)
常用快排模板12345678910111213141516void quick_sort(int q[], int l, int r){ if(l>=r)return; int x=q[(l+r)/2],i=l-1,j=r+1; while(i<j) { do i++;while(q[i]<x); do j--;while(q[j]>x); if(i<j) { swap(q[i],q[j]); } } quick_sort(q,l,j); ...
第二章 表、栈和队列
链表单链表1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#include <iostream>using namespace std;// 定义节点结构体struct Node { int data; Node* next; Node(int d) : data(d), next(nullptr) {}};// 定义单链表类class SinglyLinkedList {private: Node* head;public: SinglyLinkedList() : head(nullptr) {} // 在链表末尾添加新节点 void addAtEnd(int value); ...
第八章 不相交集类(并查集)
完整代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include<iostream>#include<vector>#include<cstring>#include<cstdio>using namespace std;class DisjSets{public: explicit DisjSets(int numElements); int find(int x) const; int find(int x); void unionSets(int root1, int root2);private: vector<int> s;};DisjSets::DisjSets(int numElements) :s{ numElements,-1...







