Exception is as a sort of structured "super go to".异常是一种结构化的"超级goto". 作为一个数十年如一日地钟爱C语言的程序员(因为C程序员需要记忆的关键字很少,而且…
理解Python语言里的异常(Exception)
Exception is as a sort of structured "super go to".异常是一种结构化的"超级goto". 作为一个数十年如一日地钟爱C语言的程序员(因为C程序员需要记忆的关键字很少,而且…
有环单链表的结点个数的统计方法
对于无环单链表,计算其结点个数是相当简单的。C代码如下: int get_length(list_t *head) { int len = 0; for (list_t *p = head; p != NULL; p =…
侵入式单链表的简单实现
众所周知,一个普通的单链表看起来是这样子滴, typedef struct foo_s { int data; struct foo_s *next; } foo_t; 结构体里包含了一个指向同类型的链表指针next; …
合并两个有序单链表
在归并排序中,对顺序存储的且为升序的两个列表a和b进行合并,合并后的列表为c,实现如下: 1 /** 2 * Merge two sorted src array a[] and b[] to dst array c[]…
完美二叉树, 完全二叉树和完满二叉树
树在数据结构中占有非常重要的地位。本文从树的基本概念入手,给出完美(Perfect)二叉树,完全(Complete)二叉树和完满(Full)二叉树的区别。如果学习过二叉树,但是对这三种二叉树并没有深入的理解,或者完全被国…
常见排序算法导读(2)[算法与算法复杂度]
1. 什么是算法(Algorithm)? 顾名思义,算法就是计算的办法或者法则。这里的计算是广义的可以做任何事情的计算,而办法和法则意味着使用它就可以解决需要的问题。 通常人们将算法定义为一个有穷的指令集,这些指令为解决…
常见排序算法导读(10)[基数排序]
与前面介绍的7种排序算法不同,基数排序(Radix Sort)是基于多关键字排序的一种排序算法。也就是说,前面介绍的7种排序算法是建立在对单关键字进行比较的基础之上,而基数排序则是采用”分配”与&…
常见排序算法导读(11)[桶排序]
上一节讲了基数排序(Radix Sort),这一节介绍桶排序(Bucket Sort or Bin Sort)。和基数排序一样,桶排序也是一种分布式排序。 桶排序(Bucket Sort)的基本思想 将待排对象序列按照一…
常见排序算法导读(9)[归并排序]
归并排序(Merge Sort)是一种典型的基于”divide and conquer”策略的排序算法。 “divide and conquer”(分而治之,简称̶…
常见排序算法导读(8)[堆排序]
堆排序(Heap Sort)之所以让人魂牵梦萦,是因为其实现过程比较复杂,不但包括堆的构造,还包括堆的析构。无论是堆的构造(初始化)还是析构,都离不开堆的调整。而调整堆的方法又分为两种,一种是向上游(Swim),另一种就…
常见排序算法导读(7)[希尔排序]
希尔排序(Shell Sort)又叫做缩小增量排序(Diminishing-increment Sort),是由D.L.Shell在1959年提出来的,旨在对直接插入排序做出改进以得到更好的时间效率。 希尔排序的基本思想…