数据结构之线性表的基本C语言语法

    科技2025-07-28  16

    一开始没做笔记,大家想看的话可以参考这里

    【数据结构绪论】【数据结构(二)】【数据结构——算法和算法分析】【数据结构——渐进时间复杂度】【数据结构——初识线性表】【数据结构——线性表的顺序实现】

    博客主要是观看青岛大学-王卓老师的视频时的总结或者个人笔记。

    基础知识补充

    元素类型说明

    这里ElemType代表你到data的类型,比如int float char等等

    如果不想换可以提前声明,比如用typedef char ElemType这样就代表这个 ElemType是一个字符型。

    如果我们需要的是一个结构体变量,则可以这样 这个结构体中一个是float型到p 还有一个int型的e,这里就用里Polynomial来作为这个结构体的类型,下面就用Polynomial来指明其类型

    数组定义

    第一个中,data[MaxSize]中存放的是第一个元素的地址,也就是首地址,当然也可以直接定义一个指针变量,进行动态分配

    这里是先定义了个线性表L,再用内存分配函数对其进行内容的分配。

    C语言的内存动态分配

    malloc的括号里,sizeof(ElemType)是计算了ElemType的字节数,如int就是4个字节,char就是1个字节,然后乘个maxsize代表开辟的空间。比如就是int型的变量,maxsize是200,这样就开辟了800个空间地址,然后其那面的类型是int,也就是800个地址,4个一组分成了200组。 注意,(Elemtype *)这个括号是强制类型转换运算,前面那个 ** 号 **因为分配好的结果是个指针,所以进去也要是指针,所以代表的指针,后面那个号就是乘的意思了

    c++的动态储存分配

    new就是分配空间,

    c++中的参数传递

    这里比如a=1 b=2然后传入函数,但只是函数中 m n的值变化了,a b的值没有变化 下面这个a b的数值就交换了 这里传入swap函数的是a和b的地址也就是p1,p2,进入后*m就代表a的值,*n是b的值,*m *n交换了,也就是a b的值交换了,所以数值改变了 这里传进去的依然是a和b的地址,但m代表的是a的地址,n代表的是b的地址,在函数中,m指向了b的地址,n指向了a的地址,所以对外部的a b没有任何影响。

    传地址方式–数组名作参数

    这里就是将a[10]的首地址传到了sub函数中,然后对其重新赋值,hello就变为了world,注意这里char b[]不能定义大小,因为我们不知道传入地址是多大的

    传地址方式–引用类型作参数

    Processed: 0.037, SQL: 8