数据结构
JulyShuofeng
这个作者很懒,什么都没留下…
展开
-
应用栈求解迷宫问题(C++实现)
栈是数据结构中一种重要的线性结构,限定仅在表尾进行插入和删除操作的线性表,因此我们也可以认为它是一种特殊的线性表。由于栈的这个特点,我们又可以称其为后进先出的结构。如图所示:650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7E/DF/wKioL1cLi_vRu4ebAAARqXsqTA8989.png" title="捕获.PNG原创 2016-06-03 13:15:19 · 6177 阅读 · 0 评论 -
一个数组实现两个栈
利用一个数组实现两个栈是数据结构中的一道经典面试题,那么如何来求解呢?大多数人为了方便都采取了静态实现方式,但是这种方式不能进行扩容,不够完美。博主利用C++尝试了一下动态实现。首先,通过了解栈的特点(后进先出),可以想到如下几个方案:First>>将数组的下标为奇数的位置都插入栈1的元素,数组的下标为偶数的位置都插入栈2的元素。这种方式插入删除时需要利用数组的下标来控制对栈1操作还是栈2操作,这原创 2016-06-03 13:15:22 · 525 阅读 · 0 评论 -
浅谈复杂链表的复制
链表是一种很常见的数据结构,单链表、双向链表、循环链表和复杂链表都是其衍生物。复杂链表之所以命名为复杂链表,也正是由于其结构的复杂。它比其他其他种类的链表多了一个指针域,这个指针域可以指向链表中的任一结点,也可以为空。其结构定义如下:struct ComplexNode { DataType _data; struct ComplexNode * _next; struct ComplexN原创 2016-06-03 13:15:25 · 881 阅读 · 0 评论 -
简单剖析稀疏矩阵的转置
矩阵我们在线性代数中所学的一种有力的工具,可用它可以处理很多的工程问题。今天,我们不讨论矩阵本身,而是研究如何来存储矩阵,使得矩阵的运算能够更加高效。首先,我们了解矩阵中的一种特殊矩阵——>稀疏矩阵。那么什么是稀疏矩阵呢?如果在矩阵中,多数的元素为0,通常认为非零元素比上矩阵所有元素的值小于等于0.05时,则称此矩阵为稀疏矩阵(sparse matrix)。有时候为了节省存储空间,我们可以对这类矩原创 2016-06-03 13:15:28 · 1298 阅读 · 0 评论 -
广义表的C++简单实现
广义表是数据结构中非常关键的一部分,它的学习对于树和二叉树有很大的起承作用。那么,它是怎么实现的呢?广义表的实现应用到了一个很熟悉的算法——递归。来看看它的代码吧!#pragma once #include #include using namespace std; enum Type { HEAD,//头 VALUE, //值 SUB, //子表 }; struct Generaliz原创 2016-06-03 13:15:31 · 437 阅读 · 0 评论 -
链表笔试题汇编(一)
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。分析:删除结点可以从链表的头结点开始顺序遍历,发现某个结点的next指向要删除的结点时,将该结点的next指向要删除的下一个结点。但是基于这种思路,得到的时间复杂度是O(n)。删除结点只是让这个结点不出现在该链表中,可以采取覆盖的方式。也就是将下一个结点的内容复制到需要删除的结点上覆盖掉原有的内容。这样的话,就可以达到原创 2016-06-03 13:14:45 · 357 阅读 · 0 评论