二叉搜索树的代码实现(C, Java)
出来混总是要还的, 大一的时候没有好好学习数据结构, 现在要补上了
二叉树的数据结构结点每一个二叉树的结点中至少含有三个元素, 即结点上的数据, 指向左子树的指针, 指向右子树的指针. 假定我们每个结点中的数据整数, 使用c语言描述结点这个数据结构如下
12345struct node { int data; // 数据域 struct node* left; // 左指针/孩子 struct node* right; // 右指针/孩子}
树对于每一颗树来说, 我们知道了它的根结点, 就能根据每一个结点上的指针找到它的所有子结点, 也就是说, 找到了它根结点就相当于找到了它的全部结点, 那么我们就来定义一个树的数据结构
123struct Tree { Node* root; // 根节点}
二叉树的遍历前序遍历(根->左->右)前序遍历, 又称先序遍历, 先根遍历. 对于每一个结点, 先遍历它的根节点, 然后遍历它的左孩子结点, 再遍历右孩子结点, 因此要先把根节点的左子树全部遍历完, 才可以遍历根结点, 然后是右子树那么用递归 ...
经典排序算法的部分实现(C)
经典排序部分算法实现(C语言)表格描述
中文名称
英文名称
平均时间复杂度
最坏时间复杂度
最好时间复杂度
空间复杂度
稳定性
选择排序
Selection
n2
n2
n2
1
不稳
冒泡排序
Bubble
n2
n2
n
1
稳
插入排序
Insertion
n2
n2
n
1
稳
堆排序
Heap
nlog2n
nlog2n
nlog2n
1
不稳
希尔排序
Shell
n1.3
n2
n
1
不稳
归并排序
Merge
nlog2n
nlog2n
nlog2n
n
稳
快速排序
Quick
nlog2n
n2
nlog2n
nlog2n
不稳
桶排序
Bucket
n + k
n2
n
n + k
稳
计数排序
Counting
n + k
n + k
n + k
n + k
稳
基数排序
Radix
n * k
n * k
n * k
n + k
稳
代码部分实现选择排序选择排序就是找到最大 / 最小的元素放在最后, 然后一个一个堆在数组一端最终完成排序, 代码如下
1234567891011121314151617 ...
Windows下MySQL解压版安装过程
MySQL的解压版安装我作为一名Windows使用人员, 我以前喜欢安装版, 因为省事, 不想写很多配置文件. 然而现在我变了, 我变得喜欢zip解压版的所有软件. 因为这下命运全部掌握在自己手中, 下面就写一下MySQL的解压版安装.
下载MySQL压缩包
首先下载好我们要使用的MySQL压缩版, 建议去官方下载, 安全
只需要打开浏览器, 键入mysql.com回车就来到mysql官方网站
点击Downloads, 往下拉, 点击下载社区版
然后下载社区版服务器
然后下载zip
下载完成之后解压, 放在你喜欢的位置, 打开后如下图
编写配置文件此时这个mysql并没有初始化, 也就没有数据存放位置所以我们需要写一个mysql的配置文件来使得mysql了解我们设置的需要的参数
新建一个文件my.ini然后用文本编辑软件打开键入以下内容
12345678910111213141516171819202122232425262728[mysqld]# set port numberport=3306# set basedir for your ...
Could not find or load main class XX.XX
1. 错误在eclipse中发生错误:Error: Could not find or load main class study.Triangle
2. 起源今天上午给一个刚刚学习java的妹子去解决问题, 文科生, 一开始环境变量没有装好, 装了一下环境变量, 环境变量好了之后, 过了一会, 则出现了上面那个错误.
3. 解决方法1. 测试环境变量首先在桌面上写了一个Helloworld 程序, 用javac测试了一下, 没有任何问题.然后又回到eclipse始终没有发现任何错误, 百思不得姐
2. 真正解决我想着重启一下看一看, 结果发现了一个很神奇的事情. 她的workspace目录竟然是C:/robot.keyPress(KeyEvent.VK_H);我当时的心情是这样的
WorkSpace的目录名竟然是一行代码当机立断, 立马改成了workspace, 然后重新打开工作区, 成功
4. 原因1. 测试回来我在想到底是不是目录的问题, 我就创建了一个跟她一模一样的目录. 果不其然, 是这样子
2. 再测试我又想到底是这个目录中的 . 造成的, 还是 ...
一个井字小游戏所引发的思考
游戏规则在井字游戏中,两个玩家使用各自的标志(一方用 X 则另一方就用O),轮流填写3x3的网格中的某个空格。当一个玩家在网格的水平方向、垂直方向或者对角线方向上出现了三个相同的 X 或三个相同的 o时,游戏结束,该玩家获胜。平局(没有贏家)是指当网格中所有的空格都被填满时没有任何一方的玩家获胜的情况。创建一个玩井字游戏的程序。
实现思路
使用String数组显示棋盘, 然后根据用户输入的下标, 进行字符串的更改, 然后再显示给用户.
X方落子和另一方落子
判断结束
显示棋盘基本思路就是用字符串实现, 先定义一个二维数组, 将可以落子的地方做为可变数据替换, 然后显示给用户. 每一次落子都要调用.所以封装成为一个方法. 因为String数组是引用型, 可以直接修改, 所以, 将棋盘字符串数组写在主函数中, 作为实参.
字符串数组—棋盘 初始化为空白字符串数组
12// Initialize the chess boardString[][] strings = new String[][] { { " ", " ", ...
protected 权限方法调用
在同一个包中子类可以调用父类的protected方法子类的对象也可以调用父类的protected 方法
在不同的包中在子类的内部可以调用父类/超类的protected 方法但是子类的对象无法调用父类/超类的protected方法
求两个字符串的最大子串
求解两个字符串的最大字串1234567891011121314151617181920212223242526272829303132/** * Return the max substring for two strings * * @param str1 * @param str2 * */public static String maxSubString(String str1, String str2) { String str = new String(); // Make the long string str1, the other str2 if (str1.length() < str2.length()) { String temp = str1; str1 = str2; str2 = temp; } // if the long string contains short string, return short string if (str1.c ...
Java mail相关问题
使用java发送邮件先上代码,稍后解释123456789101112131415161718192021222324252627282930313233343536373839404142/** * Send e-mail using 163 mail * * @param hardInfo * @throws AddressException * @throws MessagingException * @throws IOException */public static void sendEmail() throws AddressException, MessagingException, IOException { Properties props = new Properties(); props.setProperty("mail.host", "smtp.126.com"); // Set email protocol, 'cause I use 163 mail props.setProperty(&qu ...
Windows下的批量命名
关于批量重命名重命名如果将文件夹下面的所有文件全部/部分重命名,直接选择(用 ctrl 或者和shift 选择)然后右键选择重命名即可,结果如下图
批量修改后缀
首先打开所要重命名的文件的文件夹
新建一个文本文档
在其中写下 ren *.gif *.jpg意思是将 gif 后缀改为 jpg 后缀
然后将文本文件后缀名改为.bat
点击运行这个文件,然后就更改完成了
批量添加后缀
首先打开所要重命名的文件的文件夹
新建一个文本文档
在其中写下 ren . *.gif
然后将文本文件后缀名改为.bat
点击运行这个文件,然后就更改完成了
保留这个方法
如果想要在修改特定路径下的文件
你可以在任意文件夹下新建一个 bat 文件,输入以下内容,然后运行(以 C:\Users\ Lutong99\Desktop\Administrator\Groups of Chinese 文件路线为例)
只需要修改路径就可以修改了
重命名
新建 bat 文件
写入以下内容
完结
ArrayList去除重复的值
以整数为例子12345678910public static void removeDuplicate(ArrayList<Integer> list) { for(int i = 0; i < list.size(); i++) { for(int j = i+1; j < list.size(); j++) { if(list.get(i).equals(list.get(j))) { list.remove(list.get(j)); j--; } } }}
不要忘记上面第六行的 j- -; 因为每remove一个list对象,长度就会减一。就不会删除最后的几(个数随着list中的重复元素个数增加)个元素了
如果以上有什么错误或需要改正的地方,请联系我,非常感谢大家的帮助


