- 博客(17)
- 资源 (6)
- 问答 (2)
- 收藏
- 关注
原创 八皇后(原创)
空闲时间写了经典的八皇后程序。没有参考标准答案。百分百原创,虽然不是最佳解法,但是留个纪念using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.OleDb;using Sy
2016-11-29 22:45:04 290
原创 中点画圆法
中点画圆法,是画圆形比较常用的一种算法。第一点,我们可以确认画任意位置的圆,都可以先在坐标系原点画一个半径相同的圆,然后通过平移来得到这个原因。第二点,y=x,y=-x,x=0,y=0这四条线是圆心在原点上的圆的对称线。所以我们只需画出横坐标X在区间【0,sqrt(2)*r】上的弧线即可根据圆的对称性来画出其他部分.根据上面2点,只要画出以原点为中心X在区间【0,sqrt(2)*r】上
2013-10-23 11:23:10 3320
原创 直线绘制算法
点在计算机中是组成图形的最基本元素,我们几何基本图形的绘制是一个个像素点按照一定规则排列而成的组成的。而复杂的图形是有基本几何图形组成的。所以基本图形的绘制算法,是学习计算机图形学的基础和关键。基本图形包括:直线,矩形,三角形 直线是图形中最常见的,在解析几何中,二维坐标系中的直线的表达式是:y=k*x+b. 由于显示器显示图形是像素点组成的,X轴坐标和Y轴坐标只能用整数表示。所以,
2013-10-18 10:36:22 1860
原创 WPF五子棋对战
最近用WPF写了五子棋人机对战的程序。程序的设计思路是看了网上的一些帖子,借鉴了别人的思想,再经过自己的加工和总结。司令员是有借鉴,程序全部独立完成。这次分两次讨论,今天只讨论解决问题的思路。下次再介绍程序的设计。 首先讲讲我用的算法,看了网上别人的思路,得到启发,再结合数据结构里面的知识在理解一下。其实五子棋的棋盘就是一个矩阵,机器怎么来判断将棋子放在哪个位置呢?我们可以借鉴数据结构里边的
2013-02-28 20:34:33 1648
原创 插入排序
插入排序很简单,就不介绍原理了。自己贴代码给自己看,主要很久没写快速排序意外的排序算法了,练练手。int *sortFuction1(int *arr){ int len=0; int *list=(int*)malloc(sizeof(lenth)*5); list[0]=arr[0]; for(int i=1;i<lenth;i++) { len++; bool f=f
2013-01-31 22:02:53 273
原创 二叉树前序遍历非递归算法
二叉树前序遍历非递归算法要用到栈。先遍历左子树,左子树全部进栈,再出栈,直到遇到有右孩子的节点,右孩子进栈。然后重复上述步骤。 // tree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct Tnode{ int data; struct Tnode *lchild; struct Tnode *rchild;
2012-12-05 17:10:45 675
原创 二叉树
二叉树是的每个节点的度都不超过2,二叉树的左右两个节点是有序的,所以二叉树可以用有序的编号来表示节点,假设编号为1的是根节点,那么节点A的做节点编号是A/2,右节点的编号是A/2+1.我们可以用一个数组来表示节点编号。二叉树的遍历通常用递归方法。 // 二叉树.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define MAX 5struct
2012-11-14 22:35:51 334
原创 串的KMP匹配算法
串的KMP匹配算法就是匹配字符串的时候指针主串指针不回溯。此算法主要是算出模式串每个字符应该移动的长度。在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀。// KMP算法.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"int *KMP
2012-11-13 23:48:21 324
原创 串的BF匹配算法
串的SF匹配算法,算法核心思想是:首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。// 串的匹配算法.cpp : 定义控制台应用程序
2012-10-19 16:32:28 511
原创 队列的链式存储结构
队列的链式存储结构可以创建一个头结点,一个指向头结点的指针front,一个指向尾节点的指针rear。添加一个节点的时候将rear指向新节点,取一个节点的时候将front指向下个节点的下一个节点。// 队列链式存储.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct link{ int data; struct link
2012-10-18 17:11:15 383
原创 队列的顺序结构
队列是一种线性表,他遵循的规则是先进先出,就好比我们排队买票一样。队列的顺序结构,我们可以用一个数组来表示一个队列,设置一个表示表头坐标的变量和一个表尾坐标的变量,读取一个元素的时候,表头坐标后移一位。添加一个元素的时候表尾元素加一位。当表尾大于数组的长度的时候就溢出了。有一种情况,当表头指针后移几位,表尾指针刚好大于数组长度的时候,数组中被取出的数据的空间没用到,称为“假溢出”。为了合理利用空间
2012-10-18 16:36:23 994
原创 栈的链式存储
栈的链式存储需要确定栈顶节点和栈顶节点。栈的链式存储结构是建立在链表的基础上,所以其实也是对链表的操作只是要把握栈的特点,在程序当中要用链表抽象的实现栈的特性。// 栈的链式存储结构.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct link{ struct link *next; int data;};
2012-10-16 14:43:23 291
原创 栈的存储结构
栈的主要特性是先进后出。在栈顶对栈进行操作。// 栈的顺序存储.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define SIZE 10#define NEWSIZE 5struct stack{ int *element; int top; int stackLength;};void initStack(stack *s)
2012-10-15 22:43:24 476
原创 双向循环链表
双向循环链表中有一些比较明显的BUG,没有改正,但是我主要是通过程序深入理解双向循环链表,最近比较忙,抽出一小点时间,刚写的,调试过,能用。主要理解思想,BUG这个当中BUG不用过多理会。// 双向链表.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct link{ int data; struct link *nex
2012-10-15 00:29:28 352
原创 循环链表的创建和读取
由于前边的博客写了单链表链表的一些函数,循环链表中一些函数与单链表相同,顾只介绍了创建循环链表和读取的方法。方法比较单间,但是可以更加深入的理解循环链表。// 循环链表.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct rollLink{ int data; struct rollLink *next;};r
2012-10-14 23:55:55 475
原创 单链表的实现
单链表夜市线性表的一种表现形式,一个表节点由一个数据空间和一个指针域组成。指针域记录下一个结点的地址。链表在插入,删除功能中效率高。但是读取某个结点的时候需要顺序读取。效率不如顺序存储形式。下面是一些链表实现的代码:// 链表.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define ERROR -1#define OK 1;stru
2012-09-17 13:23:08 302
原创 线性表 顺序存储
我从今天开始将回到对基础知识的学习。我打算对数据结构的基础知识进行回顾和整理。 线性表是一种基础数据结构且常用的数据结构。一个线性表是N个数据元素的有限序列。线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的元素不仅可以进行访问,还可以进行插入和删除。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特
2012-09-13 16:21:11 513
WPF中,窗体设置为可穿透后,怎么获取鼠标在窗体上的坐标
2015-01-16
sql server 2008 r2安装不起
2014-07-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人