lthw

笨办法学C 练习37:哈希表

练习37:哈希表原文:Exercise 37: Hashmaps译者:飞龙哈希表(HashMap、HashTable以及Dictionary)广泛用于许多动态编程语言来储存键值对的数据。哈希表通过在键上执行“哈希”运算产生整数,之后使用它来寻找相应的桶来获取或储存值。它是非常快速的使用数据结构,因为它适用于任何数据并且易于实现。下面是哈希表(也叫作字典)的一个使用示例:fr

笨办法学C 练习32:双向链表

练习32:双向链表原文:Exercise 32: Double Linked Lists译者:飞龙这本书的目的是教给你计算机实际上如何工作,这也包括多种数据结构和算法函数。计算机自己其实并没有太大用处。为了让它们做一些有用的事情,你需要构建数据,之后在这些结构上组织处理。其它编程语言带有实现所有这些结构的库,或者带有直接的语法来创建它们。C需要你手动实现所有数据结构,这使它

笨办法学C 练习21:高级数据类型和控制结构

练习21:高级数据类型和控制结构原文:Exercise 21: Advanced Data Types And Flow Control译者:飞龙这个练习是C语言中所有可用的数据类型和控制结构的摘要。它也可以作为一份参考在补完你的知识,并且不含有任何代码。我会通过创建教学卡片的方式,让你记住一些信息,所以你会在脑子里记住所有重要的概念。这个练习非常有用,你应该花至少一周的时

笨办法学C 练习34:动态数组

练习34:动态数组原文:Exercise 34: Dynamic Array译者:飞龙动态数组是自增长的数组,它与链表有很多相同的特性。它通常占据更少的空间,跑得更快,还有一些其它的优势属性。这个练习会涉及到它的一些缺点,比如从开头移除元素会很慢,并给出解决方案(只从末尾移除)。动态数组简单地实现为void 指针的数组,它是预分配内存的,并且指向数据。在链表中你创建了完整

笨办法学C 练习33:链表算法

练习33:链表算法原文:Exercise 33: Linked List Algorithms译者:飞龙我将想你介绍涉及到排序的两个算法,你可以用它们操作链表。我首先要警告你,如果你打算对数据排序,不要使用链表,它们对于排序十分麻烦,并且有更好的数据结构作为替代。我向你介绍这两种算法只是因为它们难以在链表上完成,并且让你思考如何高效操作它们。为了编写这本书,我打算将算法放在

笨办法学C 练习29:库和链接

练习29:库和链接原文:Exercise 29: Libraries And Linking译者:飞龙C语言编程的核心能力之一就是链接OS所提供的库。链接是一种为你的程序天机额外特性的方法,这些特性有其它人在系统中创建并打包。你已经使用了一些自动包含的标准库,但是我打算对哭的不同类型和它们的作用做个解释。首先,库在每个语言中都没有良好的设计。我不知道为什么,但是似乎语言的设

笨办法学C 导言:C的笛卡尔之梦

导言:C的笛卡尔之梦原文:Introduction: The Cartesian Dream Of C译者:飞龙‍Whatever I have up till now accepted as most true and assured I have gotten either from the senses or through the senses. But from

笨办法学C 练习31:代码调试

练习31:代码调试原文:Exercise 31: Debugging Code译者:飞龙我已经教给你一些关于我的强大的调试宏的技巧,并且你已经开始用它们了。当我调试代码时,我使用debug()宏,分析发生了什么以及跟踪问题。在这个练习中我打算教给你一些使用gdb的技巧,用于监视一个不会退出的简单程序。你会学到如何使用gdb附加到运行中的进程,并挂起它来观察发生了什么。在此之

笨办法学C 练习44:环形缓冲区

练习44:环形缓冲区原文:Exercise 44: Ring Buffer译者:飞龙环形缓冲区在处理异步IO时非常实用。它们可以在一段接收随机长度和区间的数据,在另一端以相同长度和区间提供密致的数据块。它们是Queue数据结构的变体,但是它针对于字节块而不是一系列指针。这个练习中我打算想你展示RingBuffer的代码,并且之后你需要对它执行完整的单元测试。# ifndef

笨办法学C 练习22:栈、作用域和全局

练习22:栈、作用域和全局原文:Exercise 22: The Stack, Scope, And Globals译者:飞龙许多人在开始编程时,对“作用域”这个概念都不是很清楚。起初它来源于系统栈的使用方式(在之前提到过一些),以及它用于临时变量储存的方式。这个练习中,我们会通过学习站数据结构如何工作来了解作用域,然后再来看看现代C语言处理作用域的方式。这个练习的真正目的