数据结构2023考研笔记(自我理解版)

2.1线性表L 前言

2.1.1··用到的单词缩写,函数

LOC(L)---location 
ElemType--数据元素类型 element type,不是关键字 ,比如typedef char ElemType;可以提前定义,也可以直接定义结构体时不使用ElemType
SqList--顺序表 sequence list
malloc、free函数--动态申请和释放空间,使用到<stdlib.h>头文件
newdelete关键字--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; 只在变量名前多了*

用法见C语言指针变量的定义与使用

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的指针类型,强调定义的是单链表的头指针