- 博客(17)
- 收藏
- 关注
原创 hw9.20 分离适配式 malloc free 实现 思想猜测
首先,先了解下书中所介绍的采用隐式空闲链表的简单适配器实现贴出来供大家参考,在Ubandu下编译成功。#include #include #define WSIZE 4#define DSIZE 8#define CHUNKSIZE (1<<12)#define MAX(x,y) ((x)>(y)?(x):(y))#define PACK(size,alloc) (
2013-11-27 20:54:08 1974
原创 hw 9.18
已分配块之需要头部,不需要脚部,带来的改变是合并时候,无法轻易的判断prevBlock 是否是一个空闲块,需要从heap_listp开始往后开始寻找到 当前块bp的上一个,判断其头部(因为你无法知道上一个到底是空闲的还是已分配的),来决定是否合并它。代码思想如下:static void* newCoaleace(void *bp){ //对于下一个块的合并与原来一样,不再赘述。只
2013-11-27 20:22:52 863
原创 hw 9.17
区别就是在全局变量中保存一个char* last_bp;在每次malloc后,动态记录last_bp的值,然后写下如下代码static void* find_nextFit(size_t asize){ char* bp = NEXTBLCK(last_listp); while(GETSIZE(HDRP(bp))!=0){ if(GETSIZE(bp
2013-11-27 20:11:53 637
原创 hw 9.16
显示空闲链表要求在空闲块中存放两个指针,一个pred指针,一个succ指针,再加上头部和脚部,最少需要16字节。最小块大小16161616疑惑,在网上查的显示空闲链表的解释下所理解的答案,如果不对,烦请指正!
2013-11-26 21:16:29 798
原创 hw 9.14
#include #include #include #include #include int main(int argc,char** argv){ int fd = open("hello.txt",O_RDWR,0); char * fistChar = (char*)mmap(NULL,1,PROT_WRITE,MAP_SHARED,fd,0); *fistChar
2013-11-26 19:47:19 671
原创 判断正数序列是不是二叉查找树的后序遍历结果
题目:输入一个正数数组,判断该数组是不是某二叉查找树的后序遍历结果。如果是,返回true,如果不是返回false思路:1.分治法:分解:找到一个pivot,判断p到pivot结点以及pivot到q-1结点的两个子序列是否满足条件。合并:当两个子序列满足条件后,判断第一个子序列的结点是否都小于根结点,第二个子序列的结点是否等大于根结点。2.如何找到该pivot。
2013-11-26 19:05:44 606
原创 找出数组中最小的k个元素
题目:输入n个整数,输出整数中最小的k个元素。思路:1.朴素算法,利用random快排,在nlgn时间内得到排序好的数组,然后输出前k个。时间复杂度有点高啊~2.对想法1进行优化,是否可以先对k个数进行排序,时间复杂度klgk,然后对一个排好序的数组进行二分插入需要lgk的时间,做n-k次,则可以完成,时间复杂度为nlgk代码如下: int piviot
2013-11-26 17:34:14 1148
原创 hw 9.12
虚拟地址格式0 0011 1010 1001地址翻译VPN 0xEtlb索引 0x2tlb标记 0x3否否0X11物理地址格式100 0110 1001物理地址引用0x10xa0x11否------
2013-11-26 15:39:15 585
原创 hw 9.11
虚拟地址格式0 0010 0111 1011地址翻译VPN 0x9tlb索引 0x1tlb标记 0x2否否0x17物理地址格式101 1111 1011物理地址引用0x30xE0x17否-----
2013-11-26 15:29:25 717
原创 二叉树中找出和为某一值的所有路径
题目:输入一个整数和一颗二叉树。从树结点到叶结点经过的结点定义为一条路径。找出路径上所有结点和为该整数的路径并打印出来。定义二叉树结点为下:struct BinaryTreeNode{int value;BinaryTreeNode* left;BinaryTreeNode* right;};思路:1.典型递归。2.设当前结点是p,用整数
2013-11-26 11:58:32 753
原创 求子数组的最大和
题目:输入一个integer数组,数组中连续的一个或者多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的最大和,要求时间复杂度为O(n)思路:1.时间复杂度是O(n) 是什么概念,要求仅遍历常数次数组。2.假设计算到数组的第k个数,那么前k-1个数的和可能有如下情况:2.1 k-1的数的和是负数或者0,那么就抛弃,因为一个负数加一个数只会更小。2.2 k-
2013-11-25 21:40:02 702
原创 设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素,并且要求时间复杂度是O(1)。思路:1.如何找到一个栈中最小的元素,要遍历一遍(pop)确定最小元素后再push进去,但这个时间复杂度肯定不对。所以就要想增加空间复杂度来减少时间复杂度。2.如果我用一个元素来记录最小元素,貌似可行,但是想到如果记录最小元素被pop出去后,怎么才能将最小元素指向第二小元
2013-11-25 21:18:52 727
原创 二元查找树转变成排序的双向链表
描述:输入一颗二元查找树,将二元查找树转换成一个排序的双向链表。要求不能创建人新创建的结点,只调整指针的指向。我的思路:利用递归思想进行解答。1.分解,将结点P分解成左子树和右自树两个部分。2.解决子问题,左子树变成一个双向链表,右子树变成一个双向链表。3.合并,将结点P的left 连接到左子树中最大的结点,将结点p的rignt连接到右子树中最小的结点。最后,将
2013-11-25 21:10:02 692
转载 深入理解计算机系统家庭作业答案
不知为何 原作者从第七章开始不再更新家庭作业的答案,只好自己开始写答案~悲催~~该系列答案chapter2~chapter6可以参考http://blog.csdn.net/yang_f_k/article/list/1,博主名称yang_f_k
2013-11-25 20:58:02 3844
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人