![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
被门夹过的核桃还能补脑么
这个作者很懒,什么都没留下…
展开
-
数据结构探险——队列
元素,关系,操作 头文件:#pragma once#ifndef _QUEUE_H#define _QUEUE_Hclass Queue{public: Queue(int queueCapacity); virtual ~Queue(); void ClearQueue(); bool QueueEmpty(); int Que...原创 2018-07-10 22:11:20 · 175 阅读 · 0 评论 -
数据结构探险—栈篇
头文件#pragma once#ifndef _STACK_H#define _STACK_H// !_STACK_Hclass Stack{public: Stack(int size); virtual ~Stack(); bool StackEmpty() const; bool StackFull() const; void Clea...原创 2018-07-11 19:31:36 · 185 阅读 · 0 评论 -
数据结构探险—链表
link.h#pragma once#ifndef _LINK_H#define _LINK_H#include "node.h"class Link{public: Link(); ~Link(); void ClearLink(); bool LinkEmpty()const; int LinkLength()const; ...原创 2018-07-18 16:53:41 · 193 阅读 · 0 评论 -
数据结构探险—二叉树
Tree.h#pragma once#ifndef _TREE_H#define _TREE_Hclass Tree{public: Tree(int size,int *pRoot); virtual ~Tree(); int *SearchNode(int nodeIndex)const; bool EnTree(int nodeIndex, ...原创 2018-07-18 21:18:16 · 258 阅读 · 0 评论 -
排序和二分查找题
题目: 输入一段不定长度的数字(各不相同),要求输入一个查找数字,如果在第一次输入中存在则输出其在数组中的位置,如果不存在则输出按从小到大排序存储在数组的位置; 结果要求: 输入: 4 {1 3 5 4} 2 6 {7 3 4 9 10 5} 9 输出: 1 4我的程序:#include <iostream>using namespace st...原创 2018-03-23 14:46:41 · 295 阅读 · 0 评论 -
数据结构探险—串
1.串的数据元素只能是字符类型; 2.以子串为操作单位;SqString.h#pragma once#ifndef _SQSTRING_H#define _SQSTRING_Hclass SqString{public: SqString(int size, char *str); ~SqString(); int StrLen()const; ...原创 2018-07-20 08:55:34 · 203 阅读 · 0 评论 -
数据结构探险——二叉树的线索化和霍夫曼树
#include <stdio.h>#include <stdlib.h>// 线索化的实质就是将二叉链表中的空指针改为指向前驱或后继的线索typedef DataType char;typedef struct node{ DataType data; int leftFlag,rightFlag; //c 没有bool,枚举也行 st...原创 2018-07-26 16:45:10 · 321 阅读 · 0 评论 -
KMP算法
这是一个非常有意思的算法,关键是理解模式串的指针的移动,参考: https://www.zhihu.com/question/21923021/answer/281346746 加深next的理解看下图: 更抽象的分析在这里: 代码如下:求next数组的过程完全可以看成字符串匹配的过程,即以模式字符串为主字符串,以模式字符串的前缀为目标字符串,一旦字符串匹配成功,那么当前的ne...原创 2018-07-21 19:53:46 · 189 阅读 · 0 评论 -
数据结构探险——数组和广义表
1.//稀疏矩阵三元组顺序表示#include &amp;lt;iostream&amp;gt;using namespace std;#define capacity 1024 typedef int Datatype;//矩阵中的元素类型struct TriType{ int row,col; Datatype value;};class TriArray{publ...原创 2018-07-22 21:11:45 · 216 阅读 · 0 评论 -
数据结构探险—线性表
.h#pragma once#ifndef _LIST_H#define _LIST_Hclass List{public: List(int size); virtual ~List(); void ClearList(); bool ListEmpty()const; int ListLength()const; bool Get...原创 2018-07-16 21:41:07 · 209 阅读 · 0 评论 -
八皇后问题的解法
暴力搜索#include <iostream>using namespace std;int judge(int a[]){ for (int i = 2; i <=8 ; ++i) { for (int j = 1; j <=i -1; ++j) { if ((a[i]==a...原创 2018-03-28 20:43:12 · 492 阅读 · 0 评论 -
中国象棋程序[4]
1.哈希函数的关键字值 为每一个棋子在棋盘每一个位置产生一个随机数,整个局面的键值就是棋盘上剩余棋子在棋盘相应位置的异或运算。 随机数的产生:srand(time(NULL));……rand()<<m^rand()<<n;//充分随机2 哈希函数 除基取余转换成与运算 7mod16 = 7^15 f(key) = key mod 2^n = k...原创 2018-04-07 16:08:16 · 409 阅读 · 0 评论 -
八皇后问题借助位运算秒解
上课手写的 实测:#include <stdio.h>#include <time.h>int count = 0;int search(unsigned char A, unsigned char B, unsigned char C){ if(B!=255) { unsigned char D = ~(A|B|C);...原创 2018-03-30 20:47:48 · 394 阅读 · 0 评论 -
题目:指针和指向指针的指针
题目:运行下面这段C语言程序之后,输出在屏幕上的结果是: void foobar(int a, int *b, int **c) { int *p = &a; *p = 101; *c = b; b = p; }int main() { int a = 1; int b = 2; int c = 3; ...原创 2018-03-22 10:43:26 · 397 阅读 · 0 评论 -
中国象棋程序[3]
//负极大值搜索算法,递归的妙用short Eval(){ ……//根据棋子的位置赋予价值}const int Maxdeepth =?;//自行设置int NegaMaxSearch(int depth){ int best,value; move movearray[128];//保存走法 move mv; best =-MaxVal...原创 2018-03-27 22:12:11 · 244 阅读 · 0 评论 -
中国象棋程序[2]
1.局面的评估程序,举帅和炮的例子#include <iostream>#include <string>using namespace std;//计算灵活性分值//灵活性由走法的个数衡量,不同棋子的权重也不同//将军的灵活性 for (int i = 0; i < 4; ++i) { n =p +kingdir[i]; if...原创 2018-03-27 21:23:08 · 935 阅读 · 0 评论 -
中国象棋程序[1]
写于2018/3/21 实验室 走法typedef struct { unsigned char from ,to;} move;//数组moveArray存储起始位置和终点,moveNum表示步数move moveArray[128];int moveNum =0;unsigned char n,p;int SaveMove(unsigned char from...原创 2018-03-21 22:01:30 · 2418 阅读 · 0 评论 -
中国象棋程序[0]
2018/3/17 参照《c/c++中国象棋程序入门与提高》一书进行中国象棋人机对弈程序的编写。对书中的算法自己动手实现,和原书上的代码大有不同。 局面表示: 1. 整数转换成对应的字符 书中算法及代码: 我的代码如下://written by dingshengli 2018-3-17//棋子值转换成对应的字符#include<iostream>...原创 2018-03-17 14:15:02 · 954 阅读 · 0 评论 -
中国象棋程序[4]
1.哈希函数的关键字值 为每一个棋子在棋盘每一个位置产生一个随机数,整个局面的键值就是棋盘上剩余棋子在棋盘相应位置的异或运算。 随机数的产生:srand(time(NULL));……rand()<<m^rand()<<n;//充分随机2 哈希函数 除基取余转换成与运算 7mod16 = 7^15 f(key) = key mod 2^n = k...原创 2018-04-10 20:38:49 · 508 阅读 · 0 评论