数据结构2023考研笔记(自我理解版)
文章目录
2.1线性表L 前言
2.1.1··用到的单词缩写,函数
LOC(L)---location
ElemType--数据元素类型 element type,不是关键字 ,比如typedef char ElemType;可以提前定义,也可以直接定义结构体时不使用ElemType
SqList--顺序表 sequence list
malloc、free函数--动态申请和释放空间,使用到<stdlib.h>头文件
new、delete关键字--C++方法动态申请和释放空间
LinkList--英文意思单链表,通常用LinkList定义单链表,表示时强调是一个单链表,与LNode*等价
LNode--链表中的任意结点,LNode* 强调是一个任意节点的指针变量
2.1.2··sizeof
sizeof(int)= 4B //B是字节byte简写
sizeof(char)=1B
2.1.3–typedef的用法
见这里
2.1.4–指针变量
ElemType *Data; 类似int a; 只在变量名前多了*号
2.1.5–c语言动态分配空间

L.data ,在C++中是 L->data
(ElemType*) 起 强制转换成指针型 的作用
malloc(m),m是 整数 哦
2.1.6–参数传递:值传递、地址传递、引用传递
可以看C语言函数参数的传递详解
我的理解
值传递 调用时把实参传过去,函数改变的是形参的值,但是不改变实参。
引用传递 需要把值传过来。
地址传递 (指针变量 做参数)由于传了地址,再使用*p就用的变量值了,内存地址上的东西变了,也相当于改变了实参;
不使用*p实参不会改变。
(数组名作参数),传递数组首地址,改变实参
(引用类型作参数),&j=i; //&j 会跟着 i 改变而改变,j和i是用的同一块地址C++语法 引用:给一个对象起别名

2.2 自问自答
2.2.1.引用调用和调用有什么区别和联系?
引用& 把修改的结果带回来
参见:https://blog.csdn.net/culing2941/article/details/108618649
普通调用实现函数,只不过函数结果存到另一个地方,没有覆盖传入参数的值
注意用C++工具运行
#include<stdio.h>
void test(int &x){
x=100002;
printf("test函数内部x=%d\n",x);
}
int main(){
int x=1;
printf("调用test函数前x=%d\n ",x);
test(x);//注意这里没有赋予新的变量保存调用函数的结果
printf("调用test函数后x=%d\n",x);
}
调用test函数前x=1
test函数内部x=100002
调用test函数后x=100002
2.2.2 线性表(Linear List)是什么?
由相同类型数据元素组成的有限序列。 L
涉及名词:位序---线性表中的第几个(像电梯一样,没有第0个,`从1开始`)
空表---元素个数为0
2.2.3 .数据结构三要素
逻辑结构、运算、
逻辑结构:比如线性表
2.2.4. 线性表的基本操作
增删改查
InitList(&L)
2.2.5. 顺序表 随机存取


2.2.6.脏数据
内存遗留的数据,虽然编译器会在定义变量是赋初始默认值,但编译器种类太多,建议自己设置初始值 L.length=0//顺序表初始长度为0
2.3 线性表的链式表示 顺序存取
2.3.1 相关术语:头指针,头结点,首元结点
简记:首元即第一个元素,所以算表长时从首元结点开始,头结点不算

2.3.2 单链表
//-----------单链表的存储结构---------------
typedef struct LNode{
ElemType data; //节点的数据域
struct LNode *next; //节点的指针域
}LNode,*LinkList; //同样含义的两个别名,LinkList为指向结构体LNode的指针类型,强调定义的是单链表的头指针