目录
前言
小鲤碎碎念
必备基础知识
1,C的基本操作。
2,指针
3,结构体
前言
链表是数据存储的重要形式之一,但是对初学者不太友好。本系列将针对链表尽量详细的叙述。由于本人知识水平有限,如果读者发现问题,请指出斧正,感激不尽。
小鲤碎碎念
当初小鲤在学习链表的时候,秀发掉了不少/(ㄒoㄒ)/~~
现在想来,还是太年轻了`(*>﹏<*)′
在正式开始学习链表之前,你一定要学习一些基础知识。下面小鲤会一一列出,已经掌握的可以跳到第二节。
必备基础知识
包括但是不限于:输入输出,循环,条件控制等 。如果这部分没有掌握,暂时别往下走。
我们通过一道练习题来掌握基本操作。本题不做更多的解释,如果有不理解,可以私信。
509. 斐波那契数
int f[31]; //(1) int fib(int n){ //(2) f[0]=0; f[1]=1; if(n==0){ //(3) return f[0]; }else if(n==1){ return f[1]; }else{ //(4) for (int i=2;i<=n;i++){ f[i]=f[i-1]+f[i-2]; } } return f[n]; } int main(){ //(5) int n,ans; //(6) scanf("%d",&n); //(7) ans=fib(n); printf("%d",ans); //(8) return 0; }
简单说明一下,leetcode只要求你给出函数,但是如果你没有跳过本节内容,希望你将本节所有简单例子都在编译器上跑一遍。
(1)定义数组。方式为 type name[ ],[ ]所填为元素个数。
(2)fib函数。定义函数为 type name (type1 name1,type2 name2){
}
()内为形参表,{ }为函数体。调用时要有函数声明。
(3)条件判断 if( 测试条件){
语句1;
} else{
语句2;
}
测试条件为真,执行语句1,否则执行语句2。
(4)循环。for( 初始化;循环条件;表达式){
}表达式一般使循环某个条件做出改变,使条件不成立,退出循环。
(5)主函数。
(6)定义变量。
(7)输入。scanf("%d",&n);% _于&_的类型一一对应。&为取地址符。
(8)输出。
我们知道,任何一个变量在定义的时候在内存块系统都会为其申请一个内存。计算机的内存一般统一按十六进制编号。很容易想到,只要我们有了这个编号,就可以访问这个内存的内容。
int a = 3; int *p; //(1) p = &a; //(2) *p = 5; //(3)
(1)定义了一个整型变量指针。* 为指针标志,不做任何作用;
(2)对p赋值。p为指针变量,只能储存和他类型相同的变量地址。用&取地址得到a的地址。此时,*p的值为a,即3。这里的*为解地址符,有实在意义。
(3)可以通过* p 改变a的值,此时a的值为5。
有的时候,int,float,double,char等等数据类型可能还是不够我们用。可能我们比较刁钻吧。但是C的开发者很贴心留下了一种机制,可以让我们自定义类型。那就是struct。
举个栗子。
struct name{ int a; char b[10]; };
那么我们现在就有一种数据类型struct name。他有两个成员,整型变量a,和字符数组b。
需要注意的是,定义类型时不能直接赋初值。如 int a 改写为 int a=10是错误的。
struct name num[10];我们现在定义了struct name类型的数组num。
怎么使用呢?对某个成员,如struct name 里的a,我们用.来引用。如num[0].a,即代表num[0]里的成员a。而指针的话,我们可以用->。
如:
struct name * p; p=&num[0]; p->a=10;
这里就通过指针对num[0]的a进行赋值。
小鲤只是一条想要好运的笨鲤鱼o(* ̄▽ ̄*)ブ
今天的内容已经结束了>_<
如果我的文章对你有帮助,不要吝惜你的点赞,小鲤希望得到你的支持ლ(´ڡ`ლ)
求三连和关注!!!