代码改变世界

图的邻接矩阵和邻接链表表示

2012-07-28 18:37 by youxin, 8039 阅读, 1 推荐, 收藏,
摘要:图的邻接矩阵表示: 下面的这个程序读入一组定义一个无向图的便,创建一个对应这个图的邻接矩阵。如果在图中顶点i,j或j,i之间有一条边,就把a[i][j]和a[j][i]置为1,如果不存在这样的边,则置0。#includeusing namespace std;int main(){ int N; int i,j; cin>>N; int **adj=new int*[N]; for( i=0;i>i>>j) { adj[i][j]=1; adj[j][i]=1; }}另一种图的直观表示方法是链表数组,也叫邻接表(adjace... 阅读全文

STL中的stack的pop函数为什么不返回值?

2012-07-28 02:09 by youxin, 5264 阅读, 0 推荐, 收藏,
摘要:在数据结构C++语言描述——应用标准模板库(STL)中的解释如下:pop()返回类型:为什么pop()返回viod,而不是类型T呢?也就是说,为什么先用top(),然后用pop()来访问和删除站定的元素,而不是把它们合并一个返回类型T的成员函数。这种设计有很好的理由。如果pop()返回栈顶元素,则必须按值返回,而不是按引用返回。按引用返回是不可行的,因为元素在栈中已经不存在,必须在按引用返回之前现将其存储到某个地方。如果选用动态内存,除非动态内存最终被删除,否则将导致内存泄露。按照数值返回效率很差,因为它包含对类型T的复制构造函数的调用。让pop()返回数值将会导致潜在的内存问题或效率很低下, 阅读全文

C++之父B.Stroustrup言论

2012-07-27 23:27 by youxin, 459 阅读, 0 推荐, 收藏,
摘要:以下蓝色为提问,黑色为回答。红色为译注,紫色为侯捷个人认为宜再斟酌之处。浅蓝色是侯捷个人阅读时的神秘标记。本繁体文系直接转码,并未将大陆惯用术语转换为台湾惯用术语。[译者按] Bjarne Stroustrup博士,1950年出生于丹麦,先後毕业于丹麦阿鲁斯大学和英国剑挢大学,AT&T大规模程序设计研究部门负责人,AT&T 贝尔实验室和ACM成员。1979年,B. S开始开发一种语言,当时称为"C with Class",後来演化为C++。1998年,ANSI/ISO C++标准建立,同年,B. S推出其经典着作The C++ Programming Lan 阅读全文

循环链表范例Josephus问题

2012-07-27 23:12 by youxin, 650 阅读, 0 推荐, 收藏,
摘要:一群小孩围成一圈,任意假定一个数N,从第一个小孩起,逆时针方向数,每数到第M个小孩时,该小孩就离开,然后再由下一个重新报数,小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。究竟胜利者是第几个小孩呢? 类似这样的问题都叫Josephus(约瑟夫斯)问题。我们可以用一个循环链表表示排成圆圈的人,整数i代表第i个人,先为1号建立一个单节点循环链表,再把2号到N号依次插入到1号节点后面,这样就形成了一个由1--N(逆时针)的员,最后x指向N,然后我们从1号开始跳过M-1个节点,把第M-1个节点的链接改为指向第M+1号节点,一直这样做,直到只剩下一个节点为止。#includeusing n. 阅读全文

转:浅谈c++容器

2012-07-26 23:51 by youxin, 308 阅读, 0 推荐, 收藏,
摘要:首先,我们必须理解一下什么是容器,在C++中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方案”。容器还有另一个特点是容器可以自行扩展。在解决问题时我们常常不知道我们需要存储多少个对象,也就是说我们不知道应该创建多大的内存空间来保存我们的对象。显然,数组在这一方面也力不从心。容器的优势就在这里,它不需要你预先告诉 阅读全文

C++ STL queue用法

2012-07-26 23:41 by youxin, 1618 阅读, 0 推荐, 收藏,
摘要:FIFO queuequeues are a type of container adaptor, specifically designed to operate in a FIFO context (first-in first-out), where elements are inserted into one end of the container and extracted from the other.queues are implemented ascontainers adaptors, which are classes that use an encapsulated o 阅读全文

《算法导论》12章二叉排序树BST

2012-07-26 23:33 by youxin, 826 阅读, 0 推荐, 收藏,
摘要:二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;二叉查找树中序遍历可得到一个有序序列。定理:如果x是一颗包含n个节点的子树的根,则调用中序遍历过程的时间为O(n).(导论上有证明)。(1)查找SEARCH 在二叉查找树中查找一个给定的关键字k的过程与二分查找很类似,根据二叉查找树在的关键字存放的特征,很容易得出查找过程:首先是关键字k与树根的关键字进行比较. 阅读全文

c++ STL stack用法

2012-07-26 21:30 by youxin, 1241 阅读, 0 推荐, 收藏,
摘要:stacks are implemented ascontainers adaptors, which are classes that use an encapsulated object of a specific container class as itsunderlying container, providing a specific set of member functions to access its elements. Elements arepushed/poppedfrom the"back"of the specific container, w 阅读全文

堆和堆排序(堆实现优先级队列)

2012-07-26 20:50 by youxin, 687 阅读, 0 推荐, 收藏,
摘要:堆是一种特殊类型的二叉树,它具有2个性质:1.每个节点的值大于等于其每个子节点的值2该树完全平衡,最后一层的叶子都处于最左侧的位置。n个元素称为对,当且仅当它的关键字序列k1,k2,.....kn满足ki#includeusing namespace std;//元素上移操作/*数组h[]及被上移的元素下标i输出,维持堆的性质的数组h[]*/templatevoid sift_up(T h[],int i){ if(i!=1) { while(i!=1) { if(h[i]>h[i/2]) { ... 阅读全文

递归 解剖

2012-07-22 17:20 by youxin, 466 阅读, 0 推荐, 收藏,
摘要:调用函数时会发生什么情况? 每个函数(包括main)的状态是由函数中所有自动变量的内容,函数参数的值,表明在调用函数的何处重新开始的返回地址决定的。包含所有这些信息的数据区称为活动记录(activation record)或者栈结构(stack frame)。他是在运行时栈(run-time stack)上分配空间的。只有函数正在执行,他的活动记录就一直存在。这个记录是函数的私有信息池,它存储了程序正确执行并正确返回到调用它的函数所需的所有信息。活动记录的寿命一般很短,因为他们在函数开始执行时得到动态分配的空间,在函数退出时就释放其空间,只有main()的活动记录的寿命比其他活动记录常。活.. 阅读全文
上一页 1 ··· 220 221 222 223 224 225 226 227 228 ··· 269 下一页