自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 「算法精解_C语言描述」栈_栈的实现与分析

结构Stack是栈的数据结构。实现栈有很多方法, 其中一种是用链表来实现。这种方法不仅简单,而且可以使栈具有多态的特性。多态通常是面向对象语言的一种特性,它允许某种类型的对象(变量)在使用时用其他类型的对象(变量)代替。这意味着,除了使用栈本身的操作,还可以使用链表中的操作,这是因为栈本身就是一种链表,它与链表具有相同的特性。因此很多时候,可以像使用链表一样使用栈。

2017-11-17 08:28:28 350

原创 「算法精解_C语言描述」栈_栈的接口定义

我们可以把栈形象的看作一个网球筒。当往筒里放球时,球从筒底向上排到筒口;当从筒里拿球时,球从筒口往下依次被拿出,直到筒底的球最后一个被拿出。并且我们想拿到筒底的那个球,那么就必须把筒底那个球之上的球全部拿出才行。栈的一个显著特征是它按照类似的先进先出(LIFO)的方式存储和删除元素。这意味着,最后一个存入栈中的元素将会第一个被删除。在计算机中,要把元素存储到栈中,就“压入”元素;要删除栈中的元

2017-11-16 06:15:15 416

原创 「算法精解_C语言描述」链表_关于链表特点的几个问与答

一、链表与数组都有自己的优势,那什么情况下适合使用数组,什么情况下适合使用链表?当我们期望进行频繁的插入和删除操作时,链表比数组更有优势。然而,当我们期望进行随机访问的次数高于插入和删除操作的次数时,数组就显得更有优势了。随机访问是数组的强项,因为它们的元素在内存中是连续排列的。这种连续的排列,使用数组中的任何元素都能够在O(1)的时间内通过其索引访问。...

2017-11-15 08:27:10 282

原创 「算法精解_C语言描述」链表_循环链表实例 内存页帧置换(图解+实现)

在单链表的实例文章中介绍过如何使用单链表管理内存页帧的分配 使用单链表管理页帧 。但还有一个问题没有搞清楚,那就是当空闲页面的链表为空时,系统如何为其分配新的页帧呢?为了解决这个问题,操作系统从物理内存中取出页面将其放入称为交换磁盘的磁盘空间中,以这种方式来释放页帧。操作系统采用页面转换算法来决定哪一个页帧在当前最适合释放。页面转换算法中的一个例子是第二次机会转换法,有时也称为时钟算法。

2017-11-14 05:48:59 447

原创 「算法精解_C语言描述」链表_循环链表的实现与分析

同单链表相似,循环链表中的每个元素也包含两个部分:一个数据域指针和一个指向后继元素的next指针。数据结构CListElmt代表循环链表中的单独元素。该结构体拥有两个成员,如上面所述。数据结构CList代表循环链表。这个结构体同单链表相似,但它不包含tail成员。

2017-11-11 13:17:41 224

原创 「算法精解_C语言描述」链表_循环链表介绍

循环链表是链表的另一种形式,它提供了更灵活的遍历链表元素的能力。循环链表分类:单向循环链表和双向循环链表。

2017-11-10 05:50:15 355

原创 「算法精解_C语言描述」 链表_双向链表的实现与分析

双向链表的实现与分析 双向链表的组成 :1、数据成员;2、指向下一个元素的next指针;3、指向前一个元素的prev指针。数据结构DListElmt:代表双向链表中的单个元素(节点)。数据结构DList:代表双向链表数据结构,该结构的成员同前面介绍的单链表相似。

2017-11-07 20:50:47 390

原创 「算法精解_C语言描述」 链表_双向链表(接口定义)

双向链表介绍双向链表中的每一个元素都由3部分组成:除了数据成员、next指针外,每个元素还包含一个指向其前驱元素的指针,称为prev指针。双向链表的组成是这样的:将一些元素链接在一起,使得每个元素的next指针都指向其后继的元素,而每个元素的prev指针都指向其前驱元素。为了标识链表的头和尾,将第一个元素的prev指针和最后一个元素的next指针设置为NULL。

2017-11-06 06:11:28 342

原创 「C语言精髓_高级数据表示」抽象数据类型(ADT)

计算机科学已经研究出一种定义新类型的成功的方法。这种方法使用3个步骤来完成从抽象到具体的过程:1、为类型的属性和可对类型执行的操作提供一个抽象的描述。这个描述不应受任何特定实现的约束,甚至不应受任何特定编程语言的约束。这样一种正式的抽象数据描述被称为抽象数据类型(ADT)。2、开发一个实现该ADT的编程接口。即说明如何存储数据并描述用于执行所需操作的函数集合。比如,在C中您可能同时提供一个结构的定义和用来操作该结构的函数的原型。这些函数对用户自定义类型的作用和C的内置运算符对C的基本类型的作用一样。想

2017-11-05 06:56:59 3290 1

转载 不知道该学哪种编程语言?因为你还没进来看!

近日看到一篇编程语言对比的图文,涵盖主流语言,从创始到当前的趋势,分析的很详尽,特拿来分享给大家,欢迎收藏!

2017-11-05 19:42:07 863

原创 「C语言精髓_高级数据表示」从数组到链表

假设您需要创建一个地址薄程序。您将使用何种数据形式来存储信息?因为与每个项目相关的信息有很多类别,所以用一个结构来表示每一个项目显得很适合。如何表示多个项目?是标准的结构数据、动态数据,还是其他形式?各个项目需要按字母顺序排序吗?需要能够按邮政编码来搜索项目吗?需要执行的特定的动作将影响到您对如何存储信息做出的决定。简而言之,在开始编写代码之前,您需要做出许多设计上的决定。

2017-11-04 18:39:06 783

原创 算法精解_C语言 链表_单链表(应用:页帧管理)

使用链表的例子:页帧管理在一些支持虚拟内存的系统中有关于链表的一种应用。虚拟内存是一种地址空间的映射机制,它允许进程不必完全加载到物理内存(系统的实际内存)中也可以得到运行。这种方式的一个优点是进程可以使用比系统实际所允许的物理内存大得多的地址空间。另一个优点是多个进程能够共享系统的内存以并发的方式执行。运行在虚拟内存机制下的进程需要处理虚拟地址。这些地址对于进程来说就像是物理地址一样

2017-11-03 20:23:29 426

原创 算法精解_C语言 链表_单链表(接口定义+类型实现)

链表可以说是一种最为基础的数据结构。链表由一组元素以一种特定的顺序组合或链接而成,在维护数据的集合时很有用。这一点同我们常用的数组很相似。然而,链表在很多情况下比数组更有优势。特别是在执行插入和删除操作时链表拥有更高的效率。链表需要动态的开辟存储空间,也就是存储空间是在程序运行时分配的。由于在很多应用中数据的大小在编译时并不能确定,因此这种动态分配空间的特性也是链表的一个优点。

2017-10-30 08:32:50 898

原创 算法精解_C语言描述 算法性能分析,如何评判算法!

无论是在设计还是应用一种广泛认可的算法时,我们必须了解算法的性能如何!算法的性能可以通过运算速度和消耗空间来评判。之所以要了解算法的性能,原因有很多方面。如,当要解决一个问题时,有很多算法可供选择,理解了算法的性能,有助于选择最合适的算法有效的解决我们的问题。

2017-10-28 07:29:22 2520

原创 算法精解-C语言描述 递归和尾递归 (图解+实例)

递归是一种强大的方法,它允许一个对象以其自身更小的形式来定义自己。让我们来观察一下自然界中出现的递归现象:蕨类植物的叶子,每片叶子叶脉中的小分支都是整片叶子的较小缩影;又或者两个反光的物体,相互映射对方渐远的影像。这样的例子使我们明白,尽管大自然的力量是强大的,在许多方面它那种出乎意料的简洁更让我们觉得优美。同样的道理也可以用在递归算法上,从很多方面来说递归算法都是简洁而优美的,而且非常强大。

2017-10-19 06:07:23 5698 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除