随笔分类 - DataStructure笔记

摘要:第4章 程序活动记录 在内存资源分配的具体实现上,堆和栈的具体区别: 申请后系统的响应 栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。 堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。 2.3 阅读全文
posted @ 2012-10-11 22:55 Mr.Rico 阅读 (146) | 评论 (0) 编辑
摘要:第3章 数据结构与算法 1. memmove边界问题 voidmemmove_(char*pDst,constchar*pSrc,size_tsize){assert(pSrc!=NULL&&pDst!=NULL);constchar*p;char*q;if(pSrcpDst){p=pSrc+size-1;q=pDst+size-1;while(size--)*q--=*p--;}else{p=pSrc;q=pDst;while(size--)*q++=*p++;}}2. 出错处理方式3. 字符串算法的实现(1) strstr函数: 进行了比较好的判断, 主要是便于比较快的结束 阅读全文
posted @ 2012-10-11 22:46 Mr.Rico 阅读 (150) | 评论 (0) 编辑
摘要:1. 删除C/C++代码中的注释#include#include#includeusingnamespacestd;voidremove_comment(char*buf,intn){char*p=buf,*end=buf+n;char*sq_start,*dq_start,*lc_start,*bc_start;sq_start=0;//字符:单引号开始dq_start=0;//字符串:双引号开始lc_start=0;//C++注释//bc_start=0;//C语言注释/**/while(pnext->nex, q每次移动一个位置, 即q=q->next, 当p到达最后一个节点 阅读全文
posted @ 2012-10-11 21:06 Mr.Rico 阅读 (876) | 评论 (0) 编辑
摘要:9. 关系数据库的范式 10. 数据库操作中的事务 事务的4个特性: 11. 数字矩阵的生成: 对应的代码如下: #include#include#include#defineprint_arr2d(arr,N){for(inti=0;i=0;j--)arr[i][j]=m++;}else{for(intj=0;j=0;j--)arr[j][i]=m++;}}print_arr2d(arr,N);}/*12671535814164913172210121821231119202425*/voidmat_2(){constintN=5;inta[N][N];intm=1;intK=0;for(i 阅读全文
posted @ 2012-10-11 12:46 Mr.Rico 阅读 (198) | 评论 (0) 编辑
摘要:第2部分 C/C++程序设计1. 二进制位变换对于整型x:x&(x-1)的结果是x最右边的1被置为0这儿有详细介绍:http://www.cnblogs.com/xkfz007/archive/2012/06/27/2566478.html 2. 类型转换这儿提到的类型转换主要是指,浮点型和整型之间的转换。例如:float x=2.5f;则printf("%#x\n",*(int*)&x);//0x40200000printf("%#x\n",(int&)x);//0x40200000(这个需要在C++下编译)(int&) 阅读全文
posted @ 2012-07-16 13:14 Mr.Rico 阅读 (358) | 评论 (0) 编辑
摘要:第2部分 C/C++基础知识1. C++中的基本数据类型:2. C++中的整型:3. C++中的常见常量常量按照数据类型的不同分为整型常量,浮点型常量,字符型常量,还有字符串常量,转义字符常量和地址常量。整型常量可以有二进制,八进制和十六进制三种表示形式。加上L或U来表示长整型或者无符号型。浮点型常量,float型需要添加后缀f或F。浮点数只有一种进制(十进制),所有的浮点常数都是默认为double的。字符型常量,\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。字符串常量,这个是从C中继承而来的。转义字符常量,\x,\n,\b,\r,\n地址常量4. 常量和变量的区别(1)常量的 阅读全文
posted @ 2012-07-13 14:16 Mr.Rico 阅读 (196) | 评论 (0) 编辑
摘要:第9章 优先队列与第6章FIFO结构的队列不同,优先队列中元素出队列的顺序由元素的优先级决定。从优先队列中删除元素是根据优先权高或低的次序,而不是元素进入队列的次序。可以利用堆数据结构来高效地实现优先队列。堆是一棵完全二叉树,可用8.4节所介绍的公式化描述方法来高效存储完全二叉树。在高度和重量上取得平衡的左高树很适合于用来实现优先队列。本章的内容涵盖了堆和左高树。在本章的应用部分,利用堆开发了一种复杂性为O(nlogn)的排序算法,称为堆排序。在第2章所介绍的对n个元素进行排序的算法,其复杂性均为O(n^2)。虽然第3章介绍的箱子排序和基数排序算法的运行时间为Θ(n),但算法中元素的取值必须在 阅读全文
posted @ 2012-07-04 00:10 Mr.Rico 阅读 (121) | 评论 (0) 编辑
摘要:第8章 二叉树和其他树1. 术语:树和二叉树的术语,如高度、深度、层、根、叶子、子节点、父节点和兄弟节点。4种常用的二叉树遍历方法:前序遍历,中序遍历,后序遍历和按层遍历。2. 线性数据结构,表数据结构,层次数据结构3. 二叉树与树的根本区别4. 二叉树的特性5. 二叉树遍历方法在前三种方法中,每个节点的左子树在其右子树之前遍历。这三种遍历的区别在于对同一个节点在不同时刻进行访问。在进行前序遍历时,每个节点是在其左右子树被访问之前进行访问的;在中序遍历时,首先访问左子树,然后访问子树的根节点,最后访问右子树。在后序遍历时,当左右子树均访问完之后才访问子树的根节点。在逐层遍历过程中,按从顶层到. 阅读全文
posted @ 2012-07-02 11:23 Mr.Rico 阅读 (191) | 评论 (0) 编辑
摘要:第5章 堆栈堆栈是一个后进先出(last-in-first-out, LIFO)的数据结构。1. 数组实现的堆栈源代码如下:View Code #include<iostream>usingnamespacestd;template<classT>classStack{public:Stack(intMaxStackSize=10);~Stack(){delete[]stack;}boolIsEmpty()const{returntop==-1;}boolIsFull()const{returntop==MaxTop;}TTop()const;Stack<T> 阅读全文
posted @ 2012-06-28 16:28 Mr.Rico 阅读 (175) | 评论 (0) 编辑
摘要:第3章 数据描述 最常见的数据描述方法有:公式化描述、链接描述、间接寻址和模拟指针。 公式化描述借助数学公式来确定元素表中的每个元素分别存储在何处(如存储器地址)。 最简单的情形就是把所有元素依次连续存储在一片连续的存储空间中,这就是通常所说的连续线性表。 在链接描述中,元素表中的每个元素可以存储在存储器的不同区域中,每个元素都包含一个指向下一个元素的指针。同样,在间接寻址方式中,元素表中的每个元素也可以存储在存储器的不同区域中,不同的是,此时必须保存一张表,该表的第 i项指向元素表中的第 i个元素,所以这张表是一个用来存储元素地址的表。 ... 阅读全文
posted @ 2012-06-28 14:55 Mr.Rico 阅读 (693) | 评论 (0) 编辑
摘要:第 1章 C语言 1 指针 C语言中定义字符串的两种形式: char a[]="hello world"; char *b="hello world"; 对于这两种形式的区别和联系可以使用下面的操作进行区别: (1)sizeof(a)=strlen(a)+1;//主要是C语言中对于字符串的存储特点,会自动的以'\0'作为结束标志。 sizeof(b)=4; (2)strlen(a)==strlen(b);//因为a和b其实都是定义了一个字符串。 (3)从实现的本质上看,a是一个数组,在进行程序编译之后是一个存在于符号表中,其对应的数组内存 阅读全文
posted @ 2012-06-27 22:56 Mr.Rico 阅读 (745) | 评论 (0) 编辑