摘要:
前言 因为C++是以C为基础的,所以要用C++编程就必须熟悉C的语法。 C语言的学习可以学习K & R C的《C程序设计语言》 创建函数 Q: 函数原型? A: 标准C/C++有一个特征叫函数原型(function prototyping)。调用函数时,编译器使用原型确保正确传递参数并且正确处理返回 阅读全文
摘要:
前言 用户定义的数据类型(data type)或类(class),是C++区别于传统过程型语言的地方。 通常将创建好的类库存放在库(library)中。 本篇会使用几个C++类库(class libraries),如:一个很重要的标准库是输入/输出流库,可以用它从文件或键盘读取数据,并且将数据写入文 阅读全文
摘要:
前言 Q: 为什么学习并发? A: 到目前为止,你学到的都是有关顺序编程的知识,即程序中的所有事物在任意时刻都只能执行一个步骤。 A: 编程问题中相当大的一部分都可以通过使用顺序编程来解决,然而,对于某些问题,如果能够并行地执行程序的多个部分,则会变得非常方便而且很有必要。 A: 并发编程可以使程序 阅读全文
摘要:
堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java、C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉树: 1) 是一棵完全二叉树 2) 通常由数组实现。前面介绍了如何用数组表示树 3) 堆中的每个节点 阅读全文
摘要:
前言 数据结构可划分为线性结构、树型结构和图型结构三大类。前面几篇讨论了数组、栈和队列、链表都是线性结构。树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点。树型结构有树和二叉树(Binary Tree)两种,二叉树最多只允许有两个直接后继结点的有序树。 本篇将学习树的用途、运 阅读全文
摘要:
希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法。 A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插入排序的执行效率。 Q: 回忆之前的插入排序,有哪些缺点? A: 回忆之前的简单排序的“插入排序”一 阅读全文
摘要:
三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系。这个数列中的第N项是由第N-1项加N得到的。 由此,第二项是由第一项(1)加上2,得3。第三项是由第二项(3)加上3得到6,依次类推。 这个序 阅读全文
摘要:
Q: 为什么要引入链表的概念?它是解决什么问题的? A: 数组作为数据存储结构有一定的缺陷,在无序数组中,搜索是低效的;而在有序数组中,插入效率又很低;不管在哪一个数组中删除效率都很低;况且一个数组创建后,它的大小是不可改变的。 A: 在本篇中,我们将学习一种新的数据结构 —— 链表,它可以解决上面 阅读全文
摘要:
Q: 栈、队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈、队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈、队列、链表、树等等)都适用于数据库应用中作为数据记录。它们常用于记录那些对应于现实世界的对象和活动的数据,如职员档案等,这些结构便于数据 阅读全文
摘要:
Q: 冒泡排序? A: 1) 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数; 3) 针对所有的元素重复以上的步骤,除了最后一个。因此总共有N - 1 趟; 4) 持续每次对越来越少的元素 阅读全文