数据结构
hereIambabe
这个作者很懒,什么都没留下…
展开
-
基于顺序表实现线性表
大家好呀~好久没有和大家见面啦~~~进入大二了然后现在学业有点忙呢hh,做的题目少了然后时间利用的不是很有效率~所以说写一下博客来督促自己学习吧~今天使用程序实现了一下线性表。这次突破了一下自己使用了类模板,以前我都是直接在函数声明之后马上就实现,但是今天我想让整个类变得更加简明扼要一些,所以采用了类外实现。然后类外实现发现我们还要有一些要注意的地方~就是实现函数之前,都要加一原创 2017-10-31 22:54:20 · 506 阅读 · 0 评论 -
图论-拓扑排序(学习数据结构与算法分析 C++第三版—clifford A.Shaffer著)有感
”将一个DAG(有向无环图)中所有顶点在不违反前置依赖条件规定的基础上排成线性序列的过程称为拓扑排序。”在书上给了两个算法,一个是基于DFS,一个是基于队列统计入度来做。其实我觉得这两个算法的根源,其实就在于一个顶点(当然啦,在实际应用中可能是任务、工程等等等等。。。。。。)它的前置条件条件有多少?DFS的末端,其实就是一些前置条件尽可能多,注意,是尽可能多的点,因为你不断的深入,也就原创 2017-12-18 15:03:16 · 1557 阅读 · 0 评论 -
今天实现二叉树的时候遇到了一个很有意思的问题
之前写的时候并没有注意那么多,想着return p放在else里面还是外面都不成问题但是放在else外面的话会报错,说并没有定义这个字符我就奇了怪了,我不是在else里面定义好了吗后来我想了一想这样子也是有原因的我们的函数有可能一直都不进入else虽然逻辑上我们之前的return NULL就足以保证安全但是显得并不十全十美原创 2017-11-17 23:32:38 · 284 阅读 · 0 评论 -
链式队列!
#includeusing namespace std;templateclass node{public: E data; node*next; node(E it=0,node*p=NULL) { data = it; next = p; }};templateclass Queue{private: node原创 2017-11-03 17:08:57 · 289 阅读 · 0 评论 -
链式栈
实现:#includeusing namespace std;templateclass node{public: E data; node* next; node(E it, node*p = NULL) { data = it; next = p; } ~node() { cout<<data<<endl; cout<<"析构函数"<<endl;原创 2017-11-03 15:24:24 · 269 阅读 · 0 评论 -
stack(栈)!基于顺序表实现
这个星期学到了栈。老师一开始就给我们明确一个概念,我们有堆,有栈,但是没有堆栈!!!O(∩_∩)O我们先明确一下stack的概念吧。栈(stack)是限定仅在一端进行插入或删除操作的线性表。成为“LIFO”线性表,意思是“后进先出”,(last in first out)术语:top(栈顶元素)--可访问元素push(入栈)---元素插入pop(出栈)--元素删原创 2017-11-03 08:21:37 · 310 阅读 · 0 评论 -
自己基于指针实现双链表(1.0)(shaffer教材)
双链表和单链表其实其实起来大同小异。双联表其实就是每一个节点都有前驱和后继,可以说,整个双链表的具体实现起来比单链表更加灵活,但是增加了结构性开销(前驱)。有以下几个异同点:1、因为双链表中每一个节点都有前驱和后继,那么我们现在curr可以是真正的curr了!2、还是关于tail节点,究竟tail结点是没有实际内涵还是指向最后一个实际节点呢?在我看来,如果你的cur原创 2017-11-03 00:56:55 · 302 阅读 · 0 评论 -
自己基于指针实现单链表(1.0)(shaffer教材)(2.0)
因为数据结构的代码没有最好,只有更好,因此在文章后面加个版本号记录一下自己的代码变化hh。基于单链表实现线性表我们有几个点需要注意一下:1、curr的位置应该是“我们想象的”当前位置的前一个位置举例子:1,2,3,4,5,我们如果想在3插入位置,那么curr就应该设定在2如果我们设定在3,那么我们就无法找到3的前驱2来修改它的后继。有补救方法,记录当前是第几个节点,原创 2017-11-02 23:30:15 · 240 阅读 · 0 评论 -
关于Clifford A.Shaffer老师数据结构与算法分析中里用链表实现线性表的具体实现的感想
看了shaffer老师的代码,觉得这里面有很多值得学习的地方,下面一一阐述。(单链表)templateclass Link{public: E element; Link *next; Link(const E&elemval,Link*nextval=NULL) { element =elemval;next=nextval; } Link(Link*nextval=N原创 2017-11-01 13:56:56 · 1310 阅读 · 0 评论 -
学习插入排序有感
最近在学数据结构与算法设计,里面插入排序让我想了一下算法思想:(假设排成递增序列)一开始把第一个元素看作有序的,然后从这个元素的后一个元素开始依次往前比较,遇到了比它大的则交换,直到遇到了比它小的或者已经移动到了整个序列的第一个位置为止。代码如下void inssort(int arr[],int n){ for(int i=1;i { for(int j=i;j>0&&arr[j-1]>arr原创 2018-01-18 08:56:02 · 479 阅读 · 0 评论