自己动手系列
文章平均质量分 80
石锅拌饭
新的博客在简书更新,欢迎阅读指正。
展开
-
自己动手写二叉堆
一、二叉堆概念二叉堆一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。表示堆的数组有两个属性对象,其中length[A]表示数组A中的元素个数,而heap-size[A]则表示存放在A中的堆的元素个数。heap-size[A]int parent(int i) { return i/2; }int l原创 2012-08-30 22:54:04 · 2156 阅读 · 0 评论 -
自己动手写内存分配函数malloc
一、关于malloc很早就想写这篇文章了,一直拖着没有写,是想写个更完善的版本,不过最近确实没有太多时间去考虑一个很完整的版本,只有先把这个简单的版本写出来了。据说在微软今年招实习生的时候面过这个题目。malloc()是C语言中动态存储管理的一组标准库函数之一,其作用就是从内存的动态存储区(堆)中分配一个长度为size的连续内存空间。参数为一个无符号的整数,返回值则是指向所分配的连续存储空原创 2012-09-13 21:51:37 · 8286 阅读 · 1 评论 -
自己动手写一个栈
栈是一种后进先出的结构,实现栈有两种方法,链表和数组。用链表的好处在于不用提前声明大小,只在需要的时候创建。而使用数组的好处在于不用指针操作,但是却需要提前声明数组大小。不过通常使用栈的时候,容量都不需要太大,所以使用数组实现也是不错的方法。栈的数组实现比较简单,所以本文只写栈的链表实现。 1)定义链表结点以及相关内容typedef char elemtype; //定义原创 2012-09-20 20:22:38 · 4833 阅读 · 0 评论 -
自己动手写快速排序
自己动手写快速排序快速排序算法不算复杂的算法,但是实际写代码的时候却是最容易出错的代码,写的不对就容易死循环或者划分错误。所以还是自己动手多写会印象深刻点。一、初探—朴素的快速排序算法void quick_sort(int a[], int l, int u){ if (l >= u) return; int m = l; for (int i=l原创 2012-08-29 22:32:00 · 1947 阅读 · 0 评论