![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 76
颜洛滨
Java新人
展开
-
初学KMP算法
这周学习了KMP算法,只能说现在对KMP有初步的了解,并不能说真正会了,还是需要不停的学习下面上代码:next数组的求法void getNext(){ int len=strlen(tar); int i=0,j; mynext[0]=-1; int k=-1; while(i<len){ if(k==-1 || tar[i]=原创 2015-10-16 19:57:52 · 441 阅读 · 0 评论 -
几种常见的排序算法
这个星期学习了几种常见的算法,整理如下首先是冒泡排序,就是不停地交换,复杂度N*N,这里就不上代码了接下来是插入排序,就是从已经排好序的序列中找到合适的位置,复杂度也是N*N,同理不上代码。接下来是希尔排序(shell sort),希尔排序是基于插入排序提出的,算作是插入排序的一个优化,代码如下void insertsort(int a[],int k,int grap,int n原创 2015-12-12 22:20:34 · 485 阅读 · 0 评论 -
求最长连续子序列之和
看了一下怎么求最长子序列之和,发现以前没看懂的东西,其实挺简单的,看来还是一起没有用心在学习啊。最长子序列之和是指在一个数组中,求连续的和最大的子序列的和。我所学习到的有三种方法,分别介绍如下:第一种是朴素算法,也就是直接暴力求解,每次求一个子数组的最长子序列,总共求n个,最后求最大值。代码如下:void fun1(){ //a为数组 int ans=a[0];原创 2015-11-29 15:59:51 · 1182 阅读 · 0 评论 -
二叉树的若干操作
接下来的代码可能有点混乱,还请见谅二叉树的遍历: 后根遍历void after(int i,int num){ if(inum) return ; if(tree[i]=='0') return ; after(2*i,num); after(2*i+1,num); cout<<tree[i]<<" ";} 先根遍历和中根遍历只是输出位置不一原创 2015-11-15 16:32:07 · 462 阅读 · 0 评论 -
最短路 dijskal
这是最短路的dijskal的实现关于这个算法的讲解的话,前人的讲解已经足矣,所以这里不进行讲解void dijskal(int start){ memset(dis,INF,sizeof(dis)); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++ ){ dis[i]=mp[start][i];原创 2015-11-15 16:57:47 · 918 阅读 · 0 评论 -
图的广度搜索bfs,邻接表实现
这是邻接表实现的图的广度搜索邻接表的声明:struct Node{ char data; int weight; Node *next;};struct Graph { int vertnum; Node *AdjList;};Graph MGraph;建立邻接表:int getNum( Graph *G,char x){原创 2015-11-15 16:50:01 · 617 阅读 · 0 评论 -
单链表的若干操作
这学期开始学数据结构,顺便记录下一些心得和感悟,先声明一下,本人是初学者,所以肯定有很多不懂的,理解不深刻的东西,诚心希望各位多多指教,至于喷嘛,咱就不要了吧。首先是创建链表的节点:struct Node{ char data; Node *next;};Node * list;接下来是链表的创建void init(){ list = new N原创 2015-09-24 10:49:52 · 372 阅读 · 0 评论 -
递归的一些经典应用
今天看了一些关于递归的知识,顺便学习了一些经典的问题,敲了一些小代码首先是递归实现的经典的汉诺塔问题,代码如下#include #include using namespace std;int sum;void hanio(int n, char X, char Y, char Z){ if(n==1) {sum++;cout<<n<<" 从 "<<X<<" 移动到 "<原创 2015-10-10 20:56:33 · 542 阅读 · 0 评论 -
循环链表实现约瑟夫问题,拉丁方阵问题
关于约瑟夫的问题在这里就不进行描述了,详见百度就行了,下面直接上代码链表节点的定义struct Node{ int data; Node *next;}初始化该循环链表Node* init_list(int num){ int i=1; Node *tmp; head=new Node; head->next=NULL;原创 2015-10-07 10:38:15 · 1036 阅读 · 0 评论 -
关于数据结构中栈的若干使用
这个星期学习了有关于栈的相关知识以及栈的一些应用,故将其记录下来关于栈的图示这里就不进行演示了,以下是有关于栈使用中的一些代码首先是栈创建struct sqstack{ //创建一个栈 char base[maxn]; int top;}; sqstack mystack;初始化int initstack(sqstack &s){ if原创 2015-09-29 09:56:02 · 532 阅读 · 0 评论 -
彻底弄懂二叉排序树
彻底弄懂二叉排序树前言在之前学习数据结构的时候,就学过二叉排序树,不过,由于但是只是纸上谈兵,虽然知道二叉排序树的插入,删除等的操作过程,不过由于没有具体实现过,所以当想要实现的时候,就出现了“道理都懂,却无法做到”的尴尬局面,趁着最近有空,抽了个时间认真学习二叉排序树,并且手动编写了实现的代码,真正理解了二叉排序树的操作过程二叉排序树简介二叉排序树,二叉树的一个变种,主要的特点在于,该树的值在分布原创 2017-08-02 21:47:03 · 3087 阅读 · 0 评论