数据结构
Just__Do__IT___
逐梦者
展开
-
数组里a和&a的区别
#include<stdio.h>int main(void){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); //&a代表整个数组的地址,+1应该加上sizeof(a)的长度,所以ptr指向a[5]位置处。 printf("%d %d\n",*(a+1),*(ptr-1));//a代表数组首元素的地址,+1应该加上sizeof(a[0])转载 2017-05-11 12:21:48 · 317 阅读 · 0 评论 -
struct和typedefstruct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是s转载 2017-05-11 12:24:54 · 245 阅读 · 0 评论 -
c++指针的指针和指针的引用
为什么需要使用它们当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来的值。我们用下边的代码说明一下问题:int m_value = 1;void func(int *p){ p = &m_value;}int main(in转载 2017-05-28 16:41:06 · 297 阅读 · 0 评论 -
波那契数列的复杂度求解
设f(n)为参数为n时的时间复杂度,很明显:f(n)=f(n-1)+f(n-2) 这就转化为了数学上的二阶常系数差分方程,并且为其次方程。 即转化为了求f(n)的值,f(n)=f(n-1)+f(n-2)且f(0)=0; f(1)=1; 特征方程为:x^2-x-1=0 得 x=(1±√5)/2 因而f(n)的通解为: 由f(0)=0; f(1)=1可解得c_1,c_2 最终可得,时间原创 2017-05-19 11:11:36 · 497 阅读 · 0 评论 -
关于UNION
什么是union?翻译过来说,就是共用体,或者也叫联合体。说到了union,也就是共用体,就不得不说一下struct了,当我们有如下的struct的定义时:struct student{ char mark; long num; float score;};关于struct的内存结构,将就会像下图所示这样(在x86机器上演示): sizeof(struct s转载 2017-05-22 12:44:25 · 793 阅读 · 0 评论 -
卡特兰数
首先引出问题:n个元素进栈,共有多少种出栈顺序我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出: f(1) = 1 //即 1 f(2) = 2 //即 12、21 f(3) = 5 //即 123、132、213、321、231然后我们来考虑f(4), 我们给4个元素编号为a,b,c,d,转载 2017-06-03 11:40:38 · 397 阅读 · 0 评论