数据结构
Icarus_
会一点Android
展开
-
深度优先搜索
深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其原创 2015-09-29 22:10:43 · 926 阅读 · 0 评论 -
一元多项式的加减乘除运算,C++语言描述,数据结构实验
#include#include#include //标准库头文件包含函数exit()using namespace std;struct Node //建立结构体{ float coef; //项式系数 int exp; //项式指数};typedef Node polynomial;//重命名struct LNode{原创 2015-09-27 11:32:29 · 9292 阅读 · 4 评论 -
归并排序
归并排排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1原创 2016-03-08 15:55:46 · 402 阅读 · 0 评论 -
图的广度优先遍历
将图表示为邻接矩阵#includeusing namespace std;int main() { int i,j,n, m, e[100][100], book[100] = { 0 }, cur, a, b; int que[10000], head, tail; cout << "输入元素个数和顶点之间的边的个数" << endl; cin >> n >> m; for (原创 2016-02-11 20:44:31 · 476 阅读 · 0 评论 -
弗洛伊德算法求最短路径
1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i,j]=d,d表示该路的长度;否则G[i,j]=无穷大。定义一个矩阵D用来记录所插入点的信息,D[i,j]表示从Vi到原创 2016-02-14 16:24:47 · 4520 阅读 · 1 评论 -
图的深度优先遍历
用一个邻接矩阵表示图#includeusing namespace std;int e[101][101], sum,n,m, book[101];void dfs(int cur) { cout << cur; sum++; if (sum == n) return; for (int i = 1; i <= n; i++) { if (e[cur][i] == 1&&原创 2016-02-11 20:09:33 · 518 阅读 · 0 评论 -
广度优先搜索的学习
同样也是用一个迷宫的例子#includeusing namespace std;struct note{ int x;//横坐标 int y;//纵坐标 int s;//步数};int main() { struct note que[2501];//设地图50X50,所以队列2500 int a[51][51] = { 0 };//地图 int book[51][51]原创 2016-02-10 12:01:49 · 353 阅读 · 0 评论 -
深度优先搜索的学习
解决深度优先搜索关键在于“当下该如何做”到”下一步该如何做“。通常是把每一种方法都尝试一遍,当这一步解决后进行下一步。基本模型:void dfs(int step){ 判断边界 尝试每一种可萌 for(int i=1;i<=n;i++){ 继续下一步 } 返回}举例:输入一个数n,输出1~n的全排列/*全排列问题,举个例子就是有几张牌放在原创 2016-02-05 14:18:09 · 468 阅读 · 0 评论 -
数据结构,多项式运算,C++,链表
多项式加减乘除运算,链表转载 2015-09-27 11:33:42 · 2787 阅读 · 1 评论 -
迪杰斯特拉算法求最短路径
单源最短路径问题的求解单源最短路径就是一个点到其他各点最短路径用二维数组存储顶点与边的关系原创 2016-02-15 21:48:51 · 2062 阅读 · 0 评论 -
快速排序
简单的快速排序C++语言实现#includeusing namespace std;int a[100], n;void qsort(int left, int right) { int i, j, t,temp; if (left > right) return; temp = a[left]; i = left; j = right; while (i != j) {原创 2016-03-02 19:42:06 · 357 阅读 · 0 评论 -
Bellman-Ford(贝尔曼,福特)算法——解决负权边
Dijkstra算法不能解决带有负权边的图(边的权值为负数)。而Bellman-Ford算法可以解决这个问题#includeusing namespace std;int main() { int dis[10], bak[10];//bac用来备份dis int n, m, u[10], v[10], w[10], check, flag; int inf = 999999原创 2016-03-05 13:47:39 · 1812 阅读 · 0 评论 -
Bellman-Ford算法的队列优化
上一篇文章对Bellman-Ford算法的一种优化是每次仅对最短路程发生了变化的点的相邻边执行优化操作。这里可以用队列来维护这些点#includeusing namespace std;int main() { int m, n; int u[8], v[8], w[8]; //数组大小要比m的最大值大1 int first[6], next[8];//first比n大1,n原创 2016-03-05 13:55:28 · 517 阅读 · 0 评论 -
并查集
并查集是一种树型的数据结构,用于处理一些不相交集集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题原创 2016-03-05 21:20:23 · 354 阅读 · 0 评论 -
堆排序
堆排序是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为最大堆和最小堆,是完全二叉树。最大堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是最大堆,因为根据最大堆的要求可知,最大的值一定在堆顶。堆是一种特殊的完全二叉树,如果一个完全二叉树父结原创 2016-03-05 21:46:15 · 518 阅读 · 1 评论 -
简单插入排序
简单的插入排序函数 for (i=1;i<n;i++)//第一个数已经有序 { temp=a[i];//temp用来保存待插入的数 for (j=i-1;j>=0&&a[j]>temp;j--)//边判断边保存 a[j+1]=a[j]; a[j+1]=temp; }原创 2016-03-02 20:15:35 · 343 阅读 · 0 评论 -
简单的链表实现
目前还不完善,慢慢加入新功能#include#includeusing namespace std;struct node{ int data; struct node *next;};int main() { int a,n; struct node *head,*p,*q,*t; head = NULL; q = NULL; cout << "请输入元素个数"原创 2016-02-03 16:24:35 · 445 阅读 · 0 评论 -
用栈判断回文
#include#includeusing namespace std;int main() { string a; char s[100]; int min, next, top,len,mid; cin >> a; len = a.length();//求出栈的长度 mid = len / 2;//中间断开的位置 top = 0; for (int i = 0; i <原创 2016-02-02 20:52:42 · 1030 阅读 · 0 评论 -
Java实现数据结构--栈
package lianbiao;//存储链表信息class Node { Node next = null; int data; public Node(int data) { this.data = data; }}public class LinkedListTest { Node head = null;// 链表头的引用 /* 插入节点 */ priv原创 2017-04-22 22:03:59 · 371 阅读 · 0 评论