考研数据结构(2)笔记

考研数据结构笔记(2)线性表 考研数据结构笔记(2)线性表一、线性表的定义和特点1.定义2.特点二、线性表的顺序表示和实现1. 基本操作的实现a. 查找b. 插入c. 删除2. 线性表的缺点三、线性表的链式表示和实现1. 单链表的定义、表示以及存储结构a. 定义b. 表示c. 存储结构d.几个容易混淆的概念2. 单链表基本操作的实现a. 初始化(构造空表)步骤代码b. 查找步骤代码算法时间复杂度c. 插入步骤代码算法时间复... 阅读详情

数据结构(1)链接https://blog.youkuaiyun.com/Z_timer/article/details/105595519(多图预警)

数据结构(3)链接https://blog.youkuaiyun.com/Z_timer/article/details/113867898

目录

栈、队列

栈(stack)

队列(queue)

考点总结

输出序列

表达式转换

判断空满的问题

双端队列

栈的扩展

串

串的基本操作

KMP算法

数组、矩阵、广义表

数组

特殊矩阵和稀疏矩阵

广义表


栈、队列

栈(stack)

先进后出

栈是一种只能在一端进行插入或删除操作的线性表。

存储结构:顺序栈、链栈。

顺序栈: int stack[maxSize]; int top = -1; stack[++top]  = 值; 元素入栈 。 x = stack[top--];  元素出栈(top在哪里,栈就在哪里虽然没有删除该数值,但top已经后移一位,在栈里删除了该值,实际存储空间里还有后续只要入栈就会覆盖当前值)

判断栈的情况


链栈:

队列(queue)

先进先出FIFO

存储结构:顺序队、链队

顺序队(循环队):(规定:入队 先移动“队尾指针”再入队元素,出队 先移动“对头指针”再出队元素,队空状态 front = rear时为空)

入队:queue[++rear] = x;  出队:x = queue[++front];

(会造成假溢出,即rear在最后一位,但是前面的front已经离开了第0位,rear再往前走会造成数据溢出,需要弄成一个“环”。)

     

(%取余数)队空:front == rear 为 True


链队:

结构体里存指针,为空就是front为空的时候

考点总结

输出序列

由下可知,出栈从3开始,因此入栈到1、2、3结束;然后出3,入4,出4,出2,出1,至此栈内无元素,入栈5、6,后发现栈的容量为3(注意画图和栈的特性先进后出)

408 09年2题。   注意队列是先进先出,所以出队序列就是出栈序列,不会影响。由出栈序列b可知,入a,b,栈容量2,出b,留a;序列d可知,入c、d,栈容量3,出d,留a、c;。。。可知答案为3

此考点多做题就好,参考https://blog.youkuaiyun.com/Z_timer/article/details/109599781---队列的3、5、7题。

表达式转换

中缀表达式:a+b、前缀表达式(波兰式):+ab、后缀表达式(逆波兰式):ab+

中缀转前后缀

方法:加括号和花操作树,注意运算次序,先括号,后乘除最后加减。此处加括号(参考https://blog.youkuaiyun.com/Z_timer/article/details/109599781---队列的2、4、6)里体会,操作树跟加括号差不多,只是更清楚明白。

由中缀画出操作树后根据前后缀,分别用前序遍历或者后序遍历即可。

后缀转中缀

注:非运算符算一个表达式,括号括起来的内容也算表达式。两个表达式加运算符把运算符移到表达式中间即可。

1. 由ab+可知,ab为表达式,+为运算符,由此得:(a+b)

2. 由(a+b)c*可知,(a+b)c为表达式,*为运算符,由此得:((a+b)*c)

3. 省略到 (((a+b)*c)+d)eg+h*-

4. 由(((a+b)*c)+d)eg+可知,选择距离运算符最近的两个表达式,得eg+转化为e+g

5. 由(((a+b)*c)+d)(e+g)h*可知(e+g)h为表达式,*为运算符,由此得:(e+g)*h

6. (((a+b)*c)+d)(e+g)*h-可知,(((a+b)*c)+d)为表达式(e+g)*h为表达式,-为运算符,最后去掉不必要的括号得((a+b)*c)+d-(e+g)*h

后缀转前缀

同中缀,只不过把运算符放到最前面

中缀转后缀---栈实现

     操作数顺序不变,将运算符进行排序

  1. 将栈初始化为空栈;
  2. 从左到右扫描表达式的每一个字符,执行下面操作:

    2.1  遇到操作数:直接输出(添加到后缀表达式中)

    2.2  栈为空时,遇到运算符,直接入栈

    2.3  遇到左括号:将其入栈

    2.4  遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。

    2.5  遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈

    2.6  最终将栈中的元素依次出栈,输出。

https://www.cnblogs.com/wkfvawl/p/12864789.html

例题:A

中缀转前缀---栈实现

https://cloud.tencent.com/developer/article/1596127

中缀转前缀表达式思路

基本同中转后相同,不同点:

1、上面的从左到右扫描表达式,改成从右向左扫描每一个字符。

2、左括号和右括号的判断和上面相反。

后缀转前缀---栈实现

 

结束

每次遇到一个运算符,把相邻的两个表达式放在运算符后面

中缀转前、后缀代码:

https://blog.youkuaiyun.com/Z_timer/article/details/111316815

求中缀值代码:

计算3+4*5*(2+3)

1. 栈1:3 4 5 top1(栈顶指针)

    栈2:+ *['*' > '+', 所以入栈,必须大于]

2. 栈1:3 20(4*5 注意顺序) top2(栈顶指针)

    栈2:+ * ['*' == '*' 所以第一个*出栈 ]

3. 栈1:3 20 2 3

    栈2:+ * ( +

4. 栈1:3 20 5(2+3 注意顺序)

    栈2:* + 

5. 栈1:3 100(20*5)

    栈2:+

6. 103

int getPriority(char op) {
	if (op=='+' || op=='-') return 0;
	else return 1;
}

int calSub(float opand1, char op, float opand2, float &result) {
	if (op == '+') result = opand1 + opand2;
	if (op == '-') result = opand1 - opand2;
	if (op == '*') result = opand1 * opand2;
	if (op == '/') {
		if (fabs (opand2) < Min) return 0; // 判断是否为0,不能用==0 因为会存在bug具体百度,
		//Min代表一个趋近于0的值
		else result = opand1 / opand2;
	}
	return 1; // 不返回result是因为判断数据是否合法 0否1是
}
float calInfix(char exp[]) {
	float s1[maxSize];
	int top1 = -1;
	float s2[maxSize];
	int top2 = -1;
	int i=0;
	while (exp[i] != '\0') {
		if ('0' <= exp[i] && exp[i] <= '9') {	//数字进操作数栈
			s1[++top1] = exp[i] - '0'; // 转化为数字
			++i;
		} else if (exp[i] == '(') {	//左括号直接放入运算栈,待下次判断右括号
			s2[++top2] = '(';
			++i;
		} else if (exp[i]=='+' ||
		           exp[i]=='-' ||
		           exp[i]=='*' ||
		           exp[i]=='/') {	//判断运算符
			if (top2==-1||
			        s2[top2]=='('||
			        getPriority(exp[i]) > getPriority(s2[top2])) {
				s2[++top2] = exp[i];	//运算符栈为空、左括号、优先级比栈内元素大 都可直接入运算栈
				++i;
			} else {
				float opnd1, opnd2, result;
				char op;
				int flag;
				opnd2 = s1[top1--]; // 注意操作数赋值顺序
				opnd1 = s1[top1--];
				op = s2[top2--];
				flag = calSub(opnd1, op, opnd2, result);
				if (flag == 0) {
					std::cout << "ERROR" << std::endl;
					return 0;
				}
				s1[++top1] = result;
			}
		} else if (exp[i] == ')') {	//左括号直接全部放入输出栈
			while (s2[top2] != '(') {
				float opnd1, opnd2, result;
				char op;
				int flag;
				opnd2 = s1[top1--]; // 注意操作数赋值顺序
				opnd1 = s1[top1--];
				op = s2[top2--];
				flag = calSub(opnd1, op, opnd2, result);
				if (flag == 0) {
					std::cout << "ERROR" << std::endl;
					return 0;
				}
				s1[++top1] = result;
			}
			--top2;	//弹出'('
			++i;
		}
	}
	while (top2 != -1) {
		float opnd1, opnd2, result;
		char op;
		int flag;
		opnd2 = s1[top1--]; // 注意操作数赋值顺序
		opnd1 = s1[top1--];
		op = s2[top2--];
		flag = calSub(opnd1, op, opnd2, result);
		if (flag == 0) {
			std::cout << "ERROR" << std::endl;
			return 0;
		}
		s1[++top1] = result;
	}
	return s1[top1];
}
// 此处三处代码一模一样,有需求的直接整合成函数,然后调用函数即可 ps考试不会这么长代码 

求前后缀的值就不多加赘述了,只用把操作数(表达式)入栈,遇到运算符出两个操作数,运算结果放入栈中即可。

判断空满的问题

正常情况下:队空:front == rear;队满:front == (rear+1) %maxSIze

在该情况下元素个数计算

非正常情况下:

1. 入队出队的代码顺序相反

但是队空、队满、计算元素个数同上

2. 

例题:

双端队列

什么是双端队列:https://www.bilibili.com/s/video/BV1754y1d7yh

题:https://my.oschina.net/gouqizi12/blog/4414498

栈的扩展

共享栈

栈1为空top[0] == -1,栈2为空top[1] == maxSize;

S1入栈:stack[++top[0]] = x;S2入栈:stack[--top[1]] = x;

栈满:top[0] + 1 == top[1]

用栈模拟队列

括号匹配

https://leetcode-cn.com/problems/valid-parentheses/solution/

计算问题


串

串是特殊的线性表,每个单元都是一个字符。

   

// 不定长存储结构 便于动态分配内存
Str S;
S.length = L;
S.ch = (char*)malloc((L+1)*sizeof(char)); // 此处动态分配
S.ch[length范围内的下标] = 某字符/变量;
某字符/变量 = S.ch[length内的下标];
free(S.ch); //直接清空数据

串的基本操作

赋值操作

int StrAssign(Str &str, char *ch){
    if (str.ch) free(str.ch); // 清空原数据
    int len = 0;
    char *c = ch;
    while (*c){ // 获取该字符串的个数,到'\0'结束 len不包括'\0'
        ++len;
        ++c;
    }
    if (len == 0){
        str.ch = NULL;
        str.length = 0;
        return 1;
    }
    str.ch = (char*)malloc(sizeof(char)*(len+1));
    if (str.ch == NULL) return 0; // 判断分配内存是否失败
    else {
        c = ch;
        for (int i=0; i<=len; ++i,++c)
            str.ch[i] = *c;
        str.length = len;
        return 1;

    }
}
// string.h里的strcpy 

取串长度

int strLength (Str str){ return str.length; }

串比较

int strCompare (Str s1, Str s2){
    for (int i=0; i<s1.lenght && i<s2.length; ++i){
        if (s1.ch[i] != s2.ch[i])
            return s1.ch[i] - s2.ch[i]; // 两个字符串不相等则返回相减值 判断谁大谁小
        return s1.length - s2.length; // 判断字符串长度,谁大谁小 
    }
}

串连接

int concat(Str &str, Str str1, Str str2){
    if (str.ch){
        free(str.ch);
        str.ch = NULL;
    }
    str.ch = (char*)malloc(sizeof(char)*(str1.length + str2.length+ 1));
    if (!str.ch) return 0;
    int i = 0;
    while (i < str1.length){
        str.ch[i] = str1.ch[i];
        ++i;
    }
    int j = 0;
    while (j < str2.length){
        str.ch[i+j] = str2.ch[j]; // i+j从str1末尾继续赋值
        ++j;
    } 
    str.length = str1.length + str2.length;
    return 1;
}

求子串

关键操作:

清空字符串

int  clearString(Str &str) {
    if (str.ch){ 
        free(str,ch);
        str.ch = NULL;
    }
    str.length = 0;
    return 1;
}

KMP算法

建议看这里 https://blog.youkuaiyun.com/Z_timer/article/details/109599781#t13的题目和解析,应该有两三个视频。

代码:


数组、矩阵、广义表

408不常考,非统考基本考下标

数组

注意下标与实际差一即可。以及列优先、行优先。推荐参考这里的题目https://blog.youkuaiyun.com/Z_timer/article/details/109599781#t17

特殊矩阵和稀疏矩阵

特殊矩阵

对称矩阵、三角矩阵、对角矩阵

稀疏矩阵

三元组表示法第一行存储5个数字,4行4列

邻接表表示法

十字链表表示法

广义表

逻辑结构

广义表的长度:为表中最上层元素的个数。如广义表C长度为2,注意不是3.

广义表的深度:为表中括号的最大层数。求深度时可将子表展开,如D应为 ((d, e), (b, (c, d))), 由绿色可知有三层,所以深度为3

表头(Head)表尾(Tail):当广义表非空时,第一个元素为表头,其余元素组成的表是广义表的表尾。

考试一般采用这种形式:getHead(B) = d;   getTail(B) = (e)  // 其中函数不用具体实现,知道getHead取表头,getTail取表尾即可,注意表尾有括号,因为取出来为广义表

getHead(D) = B;  getTail(D) = (C) // B、D为上表中的数据

getHead((a)) = (a); getTail((a)) = () // 其中(a) 指一个广义表,我也不清楚为什么getHead的结果要加括号

存储结构

(1代表表节点,0代表原子节点,下面的ABCDE都是上面的图中的数据)

扩展线性表存储结构

 

【数据结构】【考研笔记】【C】绪论 本文来源于《数据结构考研复习指导》,仅做笔记记录用。 文章目录基本概念数据数据元素数据对象 基本概念 数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 数据是计算机程序加工的原料。 数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可以由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。 数据对象 数据对象是具有相同性质的数据元素的集合,是数据的一个子集。 ... 阅读详情

相关推荐

用栈实现中缀表达式转后缀表达式(0-9数值运算示例)

中缀表达式转后缀表达式的方法: 1.遇到操作数:直接输出(添加到后缀表达式中) 2.栈为空时,遇到运算符,直接入栈 3.遇到左括号:将其入栈 4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。 5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈(“*/”的优先级比“+-”高) 6.最终将栈中的元素依次出栈,输出。 #include<iostream> #include<stack> using nam

kupePoem的专栏 592

数据结构笔记4: 栈和队列

堆栈的定义 堆栈(stack)是一个线性表,其插入和删除操作都在表的同一端进行,这端被称为栈顶(top),另一端被称为栈底(bottom) 后进先出 堆栈的描述 公式化描述 继承线性表 template<class T> class Stack : private LinearList <T> { //线性表的尾部作为栈顶 public: Stack(int MaxStackSize = 10): LinearList<T> (MaxStackSize

Roslin_v的博客 719

考研数据结构笔记——第一章 绪论

目录 1.常见时间复杂度 2.等比等差公式补充 3.时间复杂度计算 1.常见时间复杂度 常对幂指阶 2.等比等差公式补充 3.时间复杂度计算 x = 0; while (n >= (x + l) * (x + l)) x = x + l; n>x^2 x=O(n^1/2) int func(int n) { int i=0, sum=0; while (sum <...

刘鑫磊 3918

数据结构-栈和队列

栈和队列 栈 定义: 只能在一端进行插入或删除操作的线性表 约束条件: 只能在一端进行插入或删除操作 一端: 可以插入或者删除元素的一端叫栈顶,另一端叫栈底 逻辑结构 先进后出 存储结构 顺序栈和链栈 顺序栈 顺序栈定义: int stack[maxsize]; int top=-1; 元素入栈: stack[++top]=x; 元素出栈: x=stack[top--] 判断栈空: if(top==-1) return 1; 判断栈满: if(top==maxSize-1) return 1; 链

moonlightpp的博客 2004

YOLOv11垃圾检测实战:从零搭建带GUI的智能分类系统(附完整数据集)

本文详细介绍了如何从零开始构建一个基于YOLOv11的智能垃圾检测系统,并集成图形化界面。内容涵盖数据集构建与增强、模型选型与轻量化改进(如引入注意力机制),以及使用PyQt5开发稳定GUI的完整流程,旨在解决实际部署中精度与速度的平衡问题,为环保科技等应用场景提供可落地的解决方案。

646

STM32F103C8T6全桥逆变电路PWM波生成(基于HAL库)

全桥逆变电路需要两组开关管相互协同工作,故需要两路PWM控制信号,为了防止电源短路,需要保证同一桥臂的上下两个开关管不会同时导通,故两路PWM在相位上需要相差180°;为了保证高频变压器不会磁饱和,使正负半周PWM占空比相同。但是传统的互补输出达不到调节占空比调节输出电压的效果。......

weixin_45042735的博客 6021

c++ STL中栈stack的用法

1.声明一个stack    stack s1;    stack s2; 2.stack中的操作     stack s;    s.push(x)      无返回值,将元素x压栈    s.pop();       退栈,无返回值    s.top();       取栈顶元素,返回栈顶元素    s.empty();     判断栈是

程序员的冷浪漫 1万+

配电变压器测控终端装置设计

配电变压器测控终端装置在电网运行中承担着数据采集、状态监测、故障预警及远程控制的关键任务,其性能直接关系到配电系统的安全性与可靠性。本研究围绕测控终端的硬件电路、软件算法、通信系统及系统优化展开深入分析,并基于实验测试验证系统性能。硬件设计包括模拟量输入电路、电压电流信号变换电路、A/D转换电路、控制与通信电路及系统电源电路,确保信号采集的高精度与系统的稳定性。软件部分涵盖系统控制程序、数据采集与处理程序、通信程序及显示与控制程序,实现数据的实时处理与传输。通信模块结合RS-485、CAN总线及以太网技术,

weixin_44553616的博客 1102

(数据结构实验)栈的应用-算术表达式求值

实验目的: 1.掌握栈的定义及实现; 2.掌握利用栈求解算术表达式的方法。   实验内容: 通过修改完善教材中的算法3.22,利用栈来实现算术表达式求值的算法。 对算法3.22中调用的几个函数要给出其实现过程: (1) 函数In(c):判断c是否为运算符; (2) 函数Precede(t1,t2):判断运算符t1和t2的优先级; (3) 函数Operate(a,theta,b):...

烟敛寒林的博客 1万+

LC整流滤波电路DIY:电感电容配合,手把手搭建低纹波直流电源

在直流电源设计中,整流滤波是连接交流输入与稳定输出的关键环节。常见的电容滤波虽然简单,但在大负载下纹波抑制能力有限,电感抵抗电流突变、电容抵抗电压突变,二者组合构成的LC滤波能有效降低输出电压纹波,同时减小开机浪涌电流。在工频线性电源、功放电源等对噪声敏感的场景中,LC滤波常作为稳压前的平滑缓冲。本文以一套完整DIY项目为线索,介绍整流桥后串联功率电感、并联滤波电容的电路构成,结合实际计算与波形测试,讨论电感量估算、电容选取、谐振风险、饱和电流等工程问题,并给出上电测试和故障排查方法。通过搭建与调试,可直观

weixin_29168813的博客 375

Windows Server远程桌面断开后,PyWinAuto/按键精灵脚本失效?试试这个‘会话保持’的终极配置

本文深入解析Windows Server远程桌面断开后导致PyWinAuto/按键精灵脚本失效的问题,提供会话保持的终极配置方案。通过转换到控制台会话(console模式)和调整组策略,确保自动化程序在断开连接后持续稳定运行,适用于Windows Server各版本。

weixin_28738165的博客 227

考研数据结构学习笔记2

链表不同于顺序表,顺序表底层采用数组作为存储容器,需要分配一块连续且完整的内存空间进行使用,而链表则不需要,它通过一个指针来连接各个分散的结点,形成了一个链状的结构,每个结点存放一个元素,以及一个指向下一个结点的指针,通过这样一个一个相连,最后形成了链表。它不需要申请连续的空间,只需要按照顺序连接即可,虽然物理上可能不相邻,但是在逻辑上依然是每个元素相邻存放的,这样的结构叫做链表(单链表)。链表分为带头结点的链表和不带头结点的链表,戴头结点的链表就是会有一个头结点指向后续的整个链表,但是头结点不存放数据。

爱书不爱输的程序猿 730

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 287

考研数据结构笔记(2)

线性表是具有相同数据类型的n(n>=0) 个数据元素的有限序列,其中n为表长,当n =0时线性表是一个空表。若用L命名线性表,则其一般表示为:1.所有数据元素的数据类型相同类型(每个数据元素所占空间一样大)例如全部为int类型或全为float类型。2.有限序列为有次序的数列,且必须为有限的数列。位序从1开始,数组下标从0开始。ai是线性表中的“第i个”元素线性表中的位序。a1是表头元素;an是表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱;

hellow_xqs的博客 1382

VS2019编译使用log4cplus 1.2.0

logger.properties 文件。第三步,创建项目来测试,配置库。第二步,使用VS2019编译。

h a 6 6 6 c k 为 你解决复杂难题! 525

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 162

2022天勤考研数据结构笔记 第2章 线性表

2022天勤考研数据结构笔记第2章 线性表欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 第2章 线性表 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展

weixin_46358923的博客 560

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

考研数据结构算法学习笔记整理-2

考研数据结构算法学习笔记整理

qq_51219960的博客 397

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【考研|数据结构】严蔚敏清华大学第2版笔记 第一章

数据结构是一门研究非数值计算的程序设 计问题中计算机的操作对象以及它们之间的关系和操作等的学科。数据结构 (data structure) 是相互之间存在 一 种或多种特定关 系的数据元素的集合。

ljc2330419164的博客 312

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数据结构c语言版第二章线性表笔记,2020考研计算机《数据结构(C语言版)》复习笔记(2)...

2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机《数据结构(C语言版)》复习笔记(2),希望能帮助大家!第二章 线性表知识点整理线性表是由n≥0个数据元素组成的有限序列。n=0是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。线性表上定义的基本运算:·构造空表:Initlist(L)·求表长:Listlength(L)·取结点:GetNode(L,i)·查找:Lo...

weixin_29530431的博客 288

考研数据结构笔记--串(2)——模式匹配

模式匹配简单模式匹配算法实现代码KMP算法计算next数组代码 简单模式匹配算法 简单模式匹配算法,就是用模式串去跟主串进行匹配,从主串的第一个字符开始与模式串进行匹配,若主串中字符与模式串中字符匹配失败,则从主串的第二个字符开始与模式串的第一个字符开始匹配,以此类推,若整个模式串匹配成功,则返回位置。 主 串:a b a b c a b a a c a b 模式串:a b a a 第一趟匹配:...

BELL__Meng的博客 440

考研笔记 | 数据结构 §2.线性表

线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。 特点: a₁是唯一的“第一个”数据元素,又称“表头元素” an是唯一的“最后一个”数据元素,又称“表尾元素” 除a₁外每个元素有且仅有一个直接前驱; 除an外每个元素有且仅有一个直接后继。 定义:“数组+长度” c #define MaxSize=50 typedef struct{ ElemType da...

SZT_LV的博客 695

《考研408数据结构》第七章(7.2 二叉排序树+平衡二叉树)复习笔记

本文系统梳理了二叉排序树(BST)和平衡二叉树的核心知识点。二叉排序树满足左<根<右的性质,中序遍历为升序,其查找效率与树高相关,最坏情况退化为链表(O(n))。BST的删除操作需分类处理叶子节点、单子树节点和双子树节点(需找前驱/后继替换)。平衡二叉树是BST的特殊形式,通过平衡因子(|高度差|≤1)保证效率,插入/删除时通过LL/RR/LR/RL四种旋转调整(单旋或双旋)。特别强调动态规划法计算N节点平衡二叉树形态数,以及树高与节点数的关系(如h层平衡树至少F(h+2)-1个节点)。两者关键

m0_73991249的博客 348

考研408高效复习终极指南:从零基础到高分上岸的完整路径

计算机考研408专业课备考是每个计算机专业考生的必经之路,面对数据结构、计算机组成原理、操作系统、计算机网络四门课程,很多同学感到无从下手。今天我要分享一个宝藏资源仓库——cs-408项目,它包含了完整的复习资料、刷题本和电子笔记,能帮你系统化地攻克408考试难关。 ## 为什么选择cs-408资源库? 作为计算机考研408备考的过来人,我深知复习过程中的痛点:知识点零散、资料分散、缺乏系统规

gitblog_00572的博客 838

计算机考研408终极复习指南:科学时间分配与高效学习路径

计算机考研408专业课程(数据结构、计算机组成原理、操作系统、计算机网络)是众多计算机专业考研学子的重点难点。面对四门课程庞杂的知识体系和繁重的学习任务,如何科学分配时间、制定高效学习计划成为备考成功的关键。本文将基于cs-408项目中的丰富资源,为你提供一套完整的408复习时间分配方案和学习路径地图,帮助你在有限时间内实现最大化学习效果。 ## 🔍 问题诊断:408备考的三大核心挑战 ##

gitblog_00298的博客 863

王道数据结构-考研笔记

本数据结构笔记配合王道视频食用,效果更佳。若有条件,可彩印成册,涂写勾画,记出自己的笔记,内容若有错误,请见谅。本数据结构笔记内容绝大部分来自王道数据结构视频,部分来自《大话数据结构》,希望能够帮助到在考研路上的诸位。一路生花吧!

weixin_51297735的博客 6975
上一篇: 记录安装pillow的坑
下一篇: 问题集锦1(jsp、python、数据验证、软件错误等等的错误)
AlexNett
博客等级 码龄9年 562粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值