学习日记:今天看到第二篇的学习日记居然有200多的阅读量哈哈,超级开心,虽然不知道是为什么,但也给自己很大很大的动力继续学习这个”据构数结“
今天就朝着数据结构继续进军吧!
通过和大佬的一些简短的对话,其实是能理解到链表的大概的样子,就是我看到程序应该不至于不理解,但是它的各种 *** 作我的脑子可能需要反应一下再加上理解
学数据结构多是一件美事啊
1、线性链表
链表和顺序表的不同在于,链表的数据元素之间的逻辑关系是由结点之间的指针完成的
线性单链表的存储结构包括: 数据域和指针域(例如:p->data , p->next )
呜呜呜今天花了大量时间来写一个到最后也没写出来的Java代码,于是数据结构就有一些些的摆烂呜呜呜,明天课少一点!加油!
天哪,居然学的不够不给发出来,那我还是明天踏踏实实地多学一点吧
----------现在是四月二十二号啦-----------
学习日记:今天上午的数据结构课听的贼无敌认真,老师大概讲了链表的两种形式,循环链表和双向链表,我大概的感知就是通过指针域和结点来进行相关的增删改 *** 作,具体的代码其实跟单向链表长的差不多,所以单向链表相关的知识点你掌握了没?相关的代码自己会敲了没?
1、数据结构常见的四种存储方式
顺序存储结构:
所有数据元素在存储器中占有一整块存储空间,两个逻辑上相邻的元素在存储器中的位置同样相邻。通俗来说,就是每个逻辑序号对应一个数据元素,通过次序号可直接找到对应元素的存储地址,进而获得元素值。
链式存储结构:
每个逻辑元素用一个内存结点存储,每个结点是单独分配的,通过指针域将所有结点连接起来实现数据之间的逻辑关系。通俗来说,就是数据通过指针域相连(用到指针和结构体),可以假想成数据通过一铁链相连接,铁链前后数据相关联。
索引存储结构:
在存储数据元素信息的同时还建立附加索引表,索引表中的索引项包含数据元素和存储地址
哈希存储结构:
根据元素的关键字通过哈希函数直接计算出一个值,并将这个值作为该元素的存储地址
2、结点
结点由两部分组成,一是元素数据,二是指向下一个结点的指针,链表中的每一个元素就可以称为结点。
3、指针
指针最常见的用途是构造数据结构和 *** 作内存
看了b站的一个视频感觉在学了链表之后再去理解指针好像并不是特别艰难,就是其实就是利用指针连接起来
4、各种类型的指针
int* p_int; //指向int类型变量的指针
double* p_double; //指向idouble类型变量的指针
struct Student *p_struct; //结构体类型的指针
int(*p_func)(int,int); //指向返回类型为int,有2个int形参的函数的指针
int(*p_arr)[3]; //指向含有3个int元素的数组的指针
int** p_pointer; //指向 一个整形变量指针的指针
解地址 的写法,就是在指针的前面加一个*号。
解指针的实质是:从指针指向的内存块中取出这个内存数据
5、指针课本look
指针是c语言提供的一种数据类型。联合使用指针和结构体这两种数据类型可以有效地表示许多复杂的数据结构,如队列、堆栈、链表、树、图...
程序是由数据和指令组成的
任何数据存储到内存中的过程,都需要记录两条信息,一是分配的内存空间的首地址,二是分配的内存空间的大小。
指针变量是c语言中专门用于存放地址型数据的变量。
&和*的区别是,一个是取地址,一个是取值
未初始化的指针变量的值是随机不确定的,即乱码
6、指针为什么重要呢?
①指针为函数提供修改变量值的手段
②指针为c语言的内存动态分配系统提供支持
③指针为动态数据结构提供支持
④指针可以改善某些子程序的效率
7、指针变量
指针变量也是一种变量。但其内容不能是变量的值,只能是变量的地址,而且必须用相同基类型的变量的地址对指针变量进行赋值
指针变量必须初始化后才能使用
指针变量的值是一个地址值,指针运算实质上就是对地址值的运算,因此指针之恩呢个参与赋值运算、算术运算和关系运算,并且指针可以参与的算术运算只有有限的两种:加和减,即加、减一个整数或增1、减1运算
指针的赋值运算用于改变指针变量当前的指向
p1=&a;//使p1指向变量a
指针每次增1,并非存储地址值简单地增加1字节,具体增加几字节取决于指针所指向的变量的类型(即指针的基类型)
8、字符指针
字符指针是指向字符型数组的指针变量
char str【10】;
strcpy(str,“China”);
将一个字符串赋值给字符数组必须使用函数strcpy()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)