- 博客(124)
- 资源 (9)
- 收藏
- 关注
原创 数据结构与算法-树和森林(Tree and Forest)
本文介绍了树的三种存储结构及其实现方法。双亲表示法通过存储结点数据和双亲位置实现快速查找父节点,但查找子节点效率低。孩子链表法将子节点组织成链表,便于查找子节点,结合双亲表示法可同时高效查询父子关系。孩子兄弟法(二叉树表示法)则用二叉链表存储树结构,每个结点包含指向第一个孩子和右兄弟的指针。文中提供了C语言实现代码示例,并分析了各方法的优缺点,为树结构的存储和操作提供了多种选择方案。
2025-09-25 11:10:31
744
原创 数据结构与算法-树和二叉树-二叉树的存储结构(Binary Tree)
本文介绍了树和二叉树的基本概念及存储结构。主要内容包括:1) 树和二叉树的定义,包括基本术语和两种特殊二叉树(满二叉树和完全二叉树);2) 顺序存储结构,适用于完全二叉树,但对一般二叉树存储效率低;3) 链式存储结构,包括二叉链表和三叉链表;4) 遍历算法,重点介绍了中序遍历的递归实现。文章通过图示和代码示例详细说明了相关概念和实现方法,为后续学习二叉树操作奠定了基础。
2025-09-09 11:42:52
835
原创 数据结构与算法-字符串、数组和广义表(String Array List)
本文介绍了字符串的三种存储结构和两种模式匹配算法。在存储结构方面,包括定长顺序存储(SString)、堆式动态分配存储(HString)和链式分块存储(LString)。模式匹配算法部分重点讲解了BF算法及其时间复杂度分析(最好情况O(n+m),最坏O(n×m)),以及更高效的KMP算法。文中还介绍了数组和广义表相关的内容。
2025-08-23 11:37:32
695
原创 数据结构与算法-栈和队列-队列(Queue)
本文介绍了栈和队列中的两种重要结构——循环队列和链队的实现方法。在循环队列部分,详细讲解了如何解决"假溢出"问题,通过取模运算实现头尾指针的循环移动,并给出了判断队空和队满的条件。同时提供了完整的C语言实现代码,包括初始化、求长度、入队、出队、取队头元素和销毁队列等基本操作。在链队部分,阐述了链式存储结构的实现方式,说明如何通过头尾指针管理队列,同样给出了完整的操作实现代码。两种队列结构都配有清晰的图示和代码注释,便于理解其工作原理和实现细节。
2025-08-16 11:27:48
879
原创 数据结构与算法-栈和队列-链栈(Linked Stack)
本文介绍了链栈(Linked Stack)的基本概念和操作实现。链栈采用链式存储结构,通过单链表实现。文章详细讲解了链栈的初始化、入栈、出栈、获取栈顶元素、销毁栈、判断栈空、获取栈大小和清空栈等核心操作的算法步骤与C语言实现。其中入栈和出栈操作的时间复杂度均为O(1),而获取栈大小操作需要遍历整个链表,时间复杂度为O(n)。与顺序栈不同,链栈不需要预先分配固定存储空间,可以动态调整大小,但需要额外空间存储指针信息。每个操作都配有清晰的代码实现和必要的注释说明。
2025-08-05 11:13:49
458
原创 数据结构与算法-栈和队列-顺序栈(Sequence Stack)
摘要:本文介绍了栈和队列两种线性数据结构的基本概念,重点阐述了顺序栈的实现方法。栈是后进先出(LIFO)结构,队列是先进先出(FIFO)结构。文章详细讲解了顺序栈的8个核心操作:初始化、入栈、出栈、获取栈顶元素、销毁栈、判空、获取栈大小和清空栈,并给出了C语言实现的代码示例。栈的基本操作包括动态分配空间、指针移动和边界检查等关键步骤,为后续栈的应用奠定了基础。
2025-08-01 16:22:10
745
原创 数据结构与算法-线性表-线性表的应用
线性表合并算法分为无序表合并和有序表合并两类。无序表合并通过遍历两个表,将B表中的非重复元素插入到A表末尾,时间复杂度为O(m*n)。有序表合并有顺序表和链表两种实现方式,通过比较元素值按顺序合并,时间复杂度均为O(m+n),其中顺序表空间复杂度为O(m+n),链表为O(1)。两种合并算法均能有效处理线性表的合并需求,但有序表合并效率更高,尤其是链表实现既节省空间又保持高效。
2025-06-13 10:51:41
1114
原创 数据结构与算法-线性表-双向链表(Double Linked List)
双向链表是一种线性表结构,其结点包含两个指针域,分别指向直接前驱和直接后继,解决了前向查找的问题。
2025-05-22 14:18:30
706
原创 数据结构与算法-线性表-循环链表(Circular Linked List)
循环链表是一种特殊的链表结构,其尾结点的指针指向头结点,形成一个闭环。与单链表不同,循环链表的遍历终止条件为指针是否回到头结点。合并两个循环链表时,可以通过尾指针简化操作。
2025-05-17 10:38:49
576
原创 数据结构与算法-线性表-单链表(Linked List)
单链表是一种动态数据结构,通过节点存储数据和指向下一个节点的指针来实现。与顺序表相比,单链表在插入和删除操作上更为高效,但无法随机访问元素。单链表的基本操作包括初始化、创建(头插法和尾插法)、获取元素、插入、删除、计算长度、判断是否为空、清空和销毁链表。初始化操作的时间复杂度为O(1),而创建链表和获取元素的操作时间复杂度为O(n)。单链表的实现需要定义节点结构,并通过指针操作进行链表的构建和遍历。
2025-05-15 17:08:45
1012
原创 数据结构与算法-线性表-顺序表(Sequential List)
顺序表并不难理解,主要是知道顺序表是在内存中连续存储的一段数据,知道这个后,相应的算法也就非常简单了。
2025-05-10 10:57:32
1132
原创 哈工大操作系统实验9 proc文件系统的实现
该篇文章是哈工大操作系统实验9——proc文件系统的实现完成笔记,文件系统有点难理解,一开始我一直没有搞太明白file、inode、block等之间的关系,后来结合源码、注释书籍、实验内容终于弄清晰了。
2025-01-16 11:52:37
1080
原创 哈工大操作系统实验8 终端设备的控制
该篇文章是哈工大操作系统实验8——终端设备的控制完成笔记,本次的实验比较简单,但了解到Linux系统的IO核心是文件和终端设备驱动编写的方法,收获也是很大。
2025-01-09 10:08:47
865
原创 哈工大操作系统实验7 地址映射与共享(万字详解)
该篇文章是哈工大操作系统实验7——地址映射与共享的完成笔记,其中包含了详细的步骤和相关代码,并有截图说明,实验内容都成功通过了。
2025-01-03 10:52:22
1169
原创 哈工大操作系统实验6 信号量的实现和应用(注释详细)
该篇文章是哈工大操作系统实验6——信号量的实现和应用的完成笔记,其中包含了详细的步骤和相关代码,并有截图说明。实验内容都成功通过了,但是因为内容较多,记录中难免会有疏忽,如有发现错误,欢迎大家留言和我联系。
2024-12-18 08:54:50
1261
原创 哈工大操作系统实验5 基于内核栈切换的进程切换(可运行)
该篇文章是哈工大操作系统实验5的完成笔记,主要难点在于内核栈切换的五段论,其中包含了详细的步骤和相关代码,并有截图说明。实验内容我都成功通过了,但是因为内容较多,记录中难免会有疏忽,如有发现错误,欢迎大家留言和我联系。
2024-12-06 15:47:03
991
原创 哈工大操作系统实验4 进程运行轨迹的跟踪与统计
该篇文章是哈工大操作系统实验4的完成笔记,不得不说多进程变成确实比较难,从理解实验内容到整理出这篇文章差不多用了2周时间。其中包含了详细的步骤和相关代码,并有截图说明,后面日志统计分析还做了图表。
2024-11-28 11:55:48
1868
原创 哈工大操作系统实验3 系统调用(System Call)
该篇文章是哈工大操作系统实验3的完成笔记,其中包含了详细的步骤和相关代码,并有截图说明。实验内容我都成功通过了,但是因为内容较多,记录中难免会有疏忽,如有发现错误,欢迎大家留言和我联系。
2024-11-15 10:30:55
1632
原创 哈工大操作系统实验2 操作系统的引导
第二个实验主要是操作系统系统引导相关的内容,涉及bootsect.s、setup.s的修改、其中的知识点:引导扇区、中断、读取磁盘内容、屏幕显示字符、获取硬件信息等。
2024-11-09 09:17:40
1593
原创 哈工大操作系统实验1 熟悉实验环境
实验1主要是介绍了在Ubuntu下如何编译、运行和调试linux0.11内核程序。课程中的说明非常详细了,目前照着做没有发现什么问题。
2024-10-30 08:43:02
710
原创 第2章 计算机和汇编语言
第2章重点介绍了寄存器(Register)、内存(Memory)和指令(Instruction)、指令集(Instruction set)、字节(Byte)等基本概念,然后引出了为什么要发明汇编语言(Assembly)。
2024-10-23 14:35:15
332
原创 第20章 平坦内存模型和软件任务切换
该章节的代码功能和前面几章类似,只是本章通过平坦内存模型简化开发、通过软件进行任务切换。如果前面几章都理解了,这章就容易理解了。
2024-10-18 10:57:54
1160
原创 第19章 分页机制和动态页面分配
该章主要讲解了内存的分页机制,根据其机制对第18章的代码进行改造优化。在阅读的过程中,一开始比较懵,但后来掌握一个方法后就容易理解多了:就是多从线性地址转成物理地址的角度去思考。因为书中很多的地方要通过物理地址构造线性地址,比如页目录表的物理地址是0x21000,构造的线性地址是0xFFFFF000,反向思考有点难,但是正向从线性地址0xFFFFF000转成物理地址0x21000进行思考并尝试自己计算,就很容易理解了。
2024-10-11 10:30:46
1222
原创 第18章 中断和异常的处理与抢占式多任务
本章代码实现的功能,创建内核任务、用户任务1、用户任务2,然后通过中断的方法在几个任务之间切换,不同的任务打印不同的字符串。
2024-09-30 11:56:31
1036
原创 第16章 任务和特权级保护
该章节的内容我感觉比较难,其中涉及了很多新的知识:调用门、LDT、TSS、TCB、特权级、IO特权级等,并且调用门还涉及特权级检查和变更等。我也看了很多遍,才弄清楚,建议是一个一个知识点厘清。
2024-09-24 16:42:47
996
原创 第14章 存储器的保护
该章主要介绍了GDT、代码段、数据段、栈段等的访问保护机制。存储器的保护功能可以禁止程序的非法内存访问。利用存储器的保护功能,也可以实现一些有价值的功能,比如虚拟内存管理。
2024-09-18 11:04:34
591
原创 第13章 操作数和有效地址的尺寸
16位操作尺寸的指令和32位操作尺寸的指令可能具有相同的机器码,为了区分这两种不同操作尺寸的指令,32位处理器引入了默认操作尺寸的概念。
2024-09-14 10:56:22
638
原创 第11章 32位x86处理器编程架构
IA-32(INTEL Architecture, 32-bit):INTEL 32位处理器架构简称IA-3,以8086处理器为基础发展起来的。该章重点介绍了IA-32处理器的工作方式和相关技术。
2024-09-10 15:28:37
1410
原创 第10章 中断和动态时钟显示
书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。
2024-09-09 11:23:54
1687
原创 第7章 相同的功能,不同的代码
该章节和上章实现的功能是一样。也在屏幕上输出:Label offset: number标号的十进制格式,不过用了更优雅的实现方式。
2024-08-30 11:51:49
879
php实现文章中关键词加链接的功能
2012-12-02
Atheros Communications Inc. AR8151 v2.0 Gigabit Ethernet (rev c0)网卡驱动
2012-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1