精华内容
下载资源
问答
  • 数据结构用哪本书好啊?严蔚敏的算法太简化了看不懂
  • 为现代居室带来一丝温暖,它那温暖而又安静的怀抱,安抚着每一颗疲惫的心。布艺床是十分清洗的,很多布艺床都是采用了可拆洗的设计。二、皮床怎么样:随着生活水平的不断提高,人们在家具上愿意花的钱的越来越多...

    ea33837638f6dc0a2715e870069eb4ad.png

    布艺床和皮床哪个比较好?

    一、布艺床怎么样:

    布艺床的设计上采用的颜色更加的多样化,给人一种非常温馨的感觉。布艺床的设计大多采用简约的设计风格,强调健康舒适的设计理念,形成即保留温馨又充满时尚节奏的感觉。为现代居室带来一丝温暖,用它那温暖而又安静的怀抱,安抚着每一颗疲惫的心。布艺床是十分好清洗的,很多布艺床都是采用了可拆洗的设计。

    二、皮床怎么样:

    随着生活水平的不断提高,人们在家具上愿意花的钱的越来越多,因此很多不同材料都开始被运用到家具中,皮床就是人们对睡眠质量要求越来越高,也发展起来了新兴床铺。皮床以其舒适柔软、色彩绚丽、造型圆润,高贵典雅等优点倍受人们的喜爱,其颜色也非常的的多样化,有白色、红色、紫色、棕色。现在很多皮床的靠枕还可以提高,能够更加舒适的享受看书,看电视等床上时光。

    三、布艺床的特点:

    布艺床比较适合休闲的家居风格装饰,比如田园风格或是韩式风格。布艺床大的在于它的清洗方便,床套和床的骨架是分开的,要清洗的时候只需要将床套拆卸下来就能够清洗了,并且,床套的选择非常丰富,很多厂家都会一个规格的布艺床生产出很多款床套以供消费者选择,满足消费者需求的多样性。

    四、皮床的特点:

    皮床多是软体床,显高贵气质皮床的床头、床架都由真皮做面子,皮床本身的材质决定了它柔软舒适的特点,柔软的皮艺表面再加上光滑的手感,能给人带来一种尊贵的质感。有的皮床床头上的靠枕还可以调节高度,不仅让人睡得更舒服,睡前在灯下翻几页书,或靠在柔软的床头上看看电视,温柔的感觉随即到来。

    布艺床和皮床哪一个更好打理?

    如果你是个比较懒的人,那么建议你选择布艺床比较好,应为布艺床的床套和床的骨架是分开的,需要清洗的时候只要将窗套拆卸下来清洗就可以的非常的方便。而皮床的保养就比较讲究,首先皮床的味道很大,将这股味道去掉就需要很长时间,日常生活中还要对皮床的皮质进行保养和清洁,这都是非常细致的活。

    对新购置的皮床,首先用清水洗湿毛巾,拧干后抹去表面的尘埃以及污垢,再用护理剂轻擦皮质表面一至两遍。然后使用含蜡质的护理品,这样在真皮表面形成一层保护膜,使日后的污垢不易深入真皮毛孔,便于以后的清洁。

    以上文章就是关于布艺床和皮床哪个比较好?布艺床和皮床哪一个更好打理?的全部内容,不知道大家看了以后是不是都了解清楚了。布艺床和皮床各自都有,具体选择哪一种是要看卧室的装修风格。如果是装修成欧式风格,一般就要选择皮床比较好看,如果是装修成挑选风格,就可以选择布艺床。

    展开全文
  • 我入门时间不长,半年左右,从事基于JAVA平台的应用软件开发,现在很想找本数据结构的书看看,虽然开发时不一定得上, 但对于修炼内功还是很有帮助的。特别是有些JAVA语言版的数据结构书,还同时配合讲述了,JAVA...
  • C#数据结构

    2013-12-10 11:49:54
    数据结构及其有关概念,接着讨论算法的相关知识,最后简单介绍本书所要 到的相关数学知识和C#知识。 1.1 数据结构 1.1.1 学习数据结构的必要性 我们知道,虽然每个人都懂得英语的语法与基本类型,但是对于同样...
  • 先推荐一下书吧,之前的一直是清华大学...现在的书是Mark Allen写的数据结构与算法分析,感觉蛮适合我的,但是最好是对指针里链表很熟悉了再来看这本书,不然会一脸懵。对于书的选择,还是看个人爱好吧,不管...

    先推荐一下书吧,之前用的一直是清华大学出版社的数据结构,感觉大学教材更多的也是这本。但是觉得这本书有些东西写的过于啰嗦,可能对新手更友好一点。而且他是C语言描述的,不是完全用C语言写,很多程序还要自己更正一下,觉得看起来不是太舒服。现在用的书是Mark Allen写的数据结构与算法分析,感觉蛮适合我的,但是最好是对指针里链表很熟悉了再来看这本书,不然会一脸懵。对于书的选择,还是看个人爱好吧,不管哪本书,只要学透了肯定都是没问题的。好了,现在开始树了。

    首先先了解一下为什么要有树这种数据结构。对于大量的输入数据,链表的线性访问时间太慢,而通过树来访问链表,大部分操作的运行平均时间是O(logN)。在这里插入图片描述
    树的定义:树是一类重要的非线性数据结构,是以分支关系定义的层次结构。树是n个节点的有限集,其中有且只有一个根节点。当n>1时,其他节点可分为互不相交的有限集,其中每个集合本身又是一棵树,称为子树。非空树中各子树是互不相交的集合。结合图看,A就是根结点,B C 及下面的是A的子树,B C之间互不相交。树中有一些定义:
    结点:表示树中数据元素,包括数据项和若干指向其他结点的指针。
    结点的度:结点拥有的子树数,结点A的度是2
    叶子:度为0的结点,图中的#都是叶子,他们没有子树。
    孩子:结点子树的跟称为该结点的孩子,B和C是A的孩子,但D不是,D是B的孩子
    双亲:孩子的上层结点就是双亲(虽然叫双亲,但只有一个),D的双亲是B
    兄弟:同一双亲的孩子,B和C就是兄弟
    数的度:一棵树中最大的结点度数,图中所有结点度都是2,所以数的度也是2
    结点的层次:从根节点算起,根A为第一层,它的孩子B.C为第二层。。。。
    深度:树中结点的最大层次数,图中深度为4
    实现树的一种方式是在每一个结点除了数据外还有一些指针,使得每个结点都可以从某个结点找到他。常用的方式有双亲表示法、孩子表示法,孩子兄弟表示法。拿双亲表示法举例子,孩子表示法就是有指向孩子的指针,有几个指针就有几个指针指向每个孩子,A有两个指针,一个指向B一个指向C。其他的几种表示法都是通过字面意思就可以理解的。

    树有很多应用,比如操作系统的目录结构,等等。树还有另一种特殊形式,叫二叉树。
    二叉树定义:二叉树和树一样,也是N个结点的有限集,不同之处是它或为空数(N=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。简单点说就是,二叉树最多只能有两个孩子,一个叫左孩子,一个叫右孩子。上面的图其实就是一个二叉树。二叉树有几个特殊的性质:
    1.在二叉树的第n层上最多有2^(n-1)个结点,第一层最多一个,第二层最多两个,以此类推
    2.深度位k的二叉树上至多含2^k-1个结点,证明用等比数列求和公式就证出来了.
    3.对任意一个二叉树,如果其叶子节点数为n0,度为2的结点数为n1,则n0=n2+1
    4.具有n个完全二叉树的深度为log2(n)+1(完全二叉树就是按照先左孩子后右孩子,再兄弟的左孩子,兄弟的右孩子,都没有再下一层的按顺序的二叉树)

    二叉查找树:二叉树的一个重要应用是在查找中使用,二叉查找树的特点是对于树中的每个节点,他的左子树全部小于他,他的右子树全部大于他。由于树的递归定义,通常写树的时候都用递归方式来写。递归是以牺牲堆栈空间来简化代码,由于二叉树的平均深度是O(log2(n)),所以我们不用担心栈呗耗尽。(用递归来写程序要思路非常清晰才可以 不然就懵了,建议大家练习的时候先自己想,再去看标准答案,不然思路会被引导的)
    下面就是程序练习了,需要实现以下几个功能:
    1.二叉查找树的添加结点程序Insert(初始化就不用写了,当空树时直接在Insert里面申请空间),需要注意的是比结点大,放到右子树,小放到左子树。
    2.二叉查找树的查找某数据程序Find,返回该结点的结构体指针
    3.二叉查找树的找最大结点程序FindMax,其实就是一直找右子树,找到空为止
    4.二叉查找树的找最小结点程序FindMin,一直找左子树,找到空为止
    5.二叉查找树的遍历程序,遍历有三种:先序、中序、后序,这里的先中后代表的是根节点的先中后。因为是查找树,所以我们用中序遍历,这样遍历出来的是有顺序的
    6.二叉查找树的删除某结点程序Delete,这个程序是最难的,需要好好好好想一想。因为删除不只是删除结点那么简单,你需要删除结点后还保持查找二叉树的属性。如果要删的结点只有一个孩子或者没有孩子,那还比较简单,直接指向他的指针指向他的唯一孩子就好了。但是如果有两个孩子,删完该怎么恢复二叉查找树,大家先想想,想不出来再看我的程序。
    下面上程序了:

    #include<stdio.h>//printf函数
    #include<stdlib.h>//malloc函数
    /*查找二叉树,左孩子小,右孩子大*/
    typedef struct Tree* TreeNode;
    struct Tree
    {
    	TreeNode left;
    	TreeNode right;
    	int elem;
    };
    /*既可以加节点,也可以建立节点,通过递归实现*/
    TreeNode Insert(int elem,TreeNode treeNode)
    {
    	if(treeNode == NULL)//空树
    	{
    		treeNode = (TreeNode)malloc(sizeof(struct Tree));
    		if(treeNode == NULL)
    			printf("Out of space");
    		else
    		{
    			treeNode->elem = elem;
    			treeNode->left = treeNode->right = NULL;
    		}
    	}
    	else//小加在左子树,大于加在右子树
    	{
    		if(elem<treeNode->elem)
    			treeNode->left = Insert(elem,treeNode->left);
    		else if(elem>treeNode->elem)
    			treeNode->right = Insert(elem,treeNode->right);
    	}
    	return treeNode;
    	
    }
    
    /*找最小的节点 只要一直找左孩子就可以了 使用递归实现*/
    TreeNode FindMin(TreeNode treeNode)
    {
    	if(treeNode == NULL)
    		printf("Find failure");
    	else if(treeNode->left)
    		FindMin(treeNode->left);
    	else
    		return treeNode;
    }
    
    /*找最大的节点 只要一直找右孩子就可以了 使用非递归实现*/
    TreeNode FindMax(TreeNode treeNode)
    {
    	if(treeNode == NULL)
    		printf("Find failure");
    	else 
    	{
    		while(treeNode->right)
    			treeNode = treeNode->right;
    	}
    	return treeNode;
    }
    
    /*删除必须先查找 根据查到的位置信息进行*/
    TreeNode Delete(int elem,TreeNode treeNode)
    {
    	TreeNode posotion = NULL;//用来释放节点
    	if(treeNode == NULL)
    		printf("Find  nfailure");
    	else
    	{
    		if(elem<treeNode->elem)
    			treeNode->left = Delete(elem,treeNode->left);
    		else if(elem>treeNode->elem)
    			treeNode->right =  Delete(elem,treeNode->right);
    		else//要判断有几个孩子
    		{
    			if(treeNode->left && treeNode->right)//两个孩子 特殊
    			{
    				treeNode->elem = FindMin(treeNode->right)->elem;
    				treeNode->right =  Delete(elem,treeNode->right);
    			}
    			else
    			{
    				posotion = treeNode;
    				if(treeNode->left)
    					treeNode = treeNode->left;
    				else
    					treeNode = treeNode->right;
    				free(posotion);
    			}
    		}
    	}
    	return treeNode;
    }
    
    TreeNode Find(int elem,TreeNode treeNode)
    {
    	if(treeNode == NULL)
    		printf("Find failure");
    	if(elem<treeNode->elem)
    		return Find(elem,treeNode->left);
    	else if(elem>treeNode->elem)
    		return Find(elem,treeNode->right);
    	else
    		return treeNode;
    }
    
    void InOrderTraverse(TreeNode treeNode)
    {
    	if(treeNode == NULL)
    		return;
    	InOrderTraverse(treeNode->left);
    	printf("%d",treeNode->elem);//先序遍历后续遍历只要把这句话放前面或者后面就好了
    	InOrderTraverse(treeNode->right);
    }
    
    int main()
    {
    	int i = 0;
    	TreeNode rootNode = NULL;
    	TreeNode position = NULL;
    	rootNode = Insert(5,rootNode);
    	rootNode = Insert(4,rootNode);
    	for(i=1;i<11;i++)
    		rootNode = Insert(i,rootNode);
    	//position = FindMax(rootNode);
    	//Delete(4,rootNode);
    	InOrderTraverse(rootNode);
    }
    

    对于删除有两个孩子的结点的操作是:现在他的右子树里面找到最小的,用数据去替换该结点数据。然后在二次查找,把那个右子树里面最小的结点给删了。

    PS:使用递归写程序对于刚接触递归的人真是一个小挑战,你需要让自己的思维打破原来,去接受一种新的模式。还是很有意思的,大家可以自己练习一下~

    展开全文
  • KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一....先来看一个简单匹配算法的函数: ...
  • 2.1 理解数据结构 5 2.2 校验 8 2.2.1 字段校验 8 2.2.2 值校验 9 2.2.3 简单统计的物理解释 10 2.3 可视化 11 2.3.1 关键词竞价排名示例 13 2.3.2 搜索来源示例 18 2.3.3 推荐分析 19 2.3.4 时间序列数据...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  •  本书是一本关于Oracle 9i & 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的...
  • 本书侧重于函数的实战应用,共分12章,前10章分别介绍了数学函数、统计函数、日期和时间函数、文本函数、逻辑函数、查找和引用函数、财务函数、信息函数以及数据库和三角函数在实战中的应用;第11 章介绍了函数与...
  • 哪本书不是从第一章到最后一章,又有哪门课不是从头讲到尾的呢?" 一本书从第一章到最后一章,一门课从头到尾,这是一个时间先后的问题,这并不等于就是以循序渐进的方式在学习.我们常有这样的感受,想认真地学习一门...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
    学习本书能帮助读者彻底理解Oracle的工作原理,并将Oracle作为一个强大的计算环境来使用,书中内容可以迅速解决大多数信息管理问题。书中选择了最重要的特性和技术,并结合实际范例进行讲解,不仅阐述了这些特性,...
  • Code Compl 代码大全

    2011-05-26 12:09:22
     10.7 数据类型和控制结构之间的关系  10.8 为变量指定单一用途  关键点  第11章 变量名的力量  11.1 选择变量名的注意事项  最重要的命名注意事项  以问题为导向  最适当的名字长度  变量名字的效果范围...
  •  本书还提供了dba完成本职工作必备的基本的uniix、sql、pl/sql和数据建模的知识,也给出了许多富有趣味性的例子,通过这些实例详细、循序渐进地说明了oracle database 11g数据库的各个概念和特性。 作译者  Sam...
  • 金融软件公司 通信公司 数据通信公司 软件公司 笔 试 内 容 C++ ,Linux,UNIX C++ ,网络 C++或 Java Java,数据库 C++ C++ C++或 Java 或 C# C++ ,数据结构,智力测试 C++或 Java,数据结构,数据库(SQL) ...
  •  本书内容上涵盖了android开发的大部分场景,从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,...
  • 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能...
  • 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 87 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0)不是更吗? 87 5.11 我曾经使用过一个编译器,不使用...
  • 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 87 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0)不是更吗? 87 5.11 我曾经使用过一个编译器,不使用...
  • 现在可以在非UI线程中填充集合,功能区控件现在是架构的一部分,通过事件的弱引用也更容易实现,数据验证可以INotifyDataErrorInfo接口异步完成;实时绘图功能可以方便地动态排序、分组修改了的数据。 ASP.NET ...
  • 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能...
  •  5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢?  5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0)  不是更吗?  5.11 我曾经使用过一个编译器,不...
  • 本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。 作者简介 龚建伟,工学博士,目前在北京理工大学从事科研究与教学工作。主要从事计算机控制技术、顺人和智慧能...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 143
精华内容 57
关键字:

数据结构用哪本书好

数据结构 订阅