数据结构读书笔记(三)(C语言)

OS-实验报告5-虚拟存储器管理 实 验 报 告 学生姓名 **,** 学号 ****** 指导老师 *** 实验地点 实验时间 班级 ***** 实验室名称: 实验项目名称: 虚拟存储器管理 实验学时: 4学时 实验... 阅读详情

                                                               栈

顺序实现:

存储结构:

 #define STACK_INIT_SIZE 10 // 存储空间初始分配量
 #define STACK_INCREMENT 2 // 存储空间分配增量
 struct SqStack
 {
   SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL
   SElemType *top; // 栈顶指针
   int stacksize; // 当前已分配的存储空间,以元素为单位
 }; // 顺序栈

基本操作:


void InitStack(SqStack &S)
 { // 构造一个空栈S
   if(!(S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType))))
     exit(OVERFLOW); // 存储分配失败
   S.top=S.base;
   S.stacksize=STACK_INIT_SIZE;
 }

 void DestroyStack(SqStack &S)
 { // 销毁栈S,S不再存在
   free(S.base);
   S.base=NULL;
   S.top=NULL;
   S.stacksize=0;
 }

 void ClearStack(SqStack &S)
 { // 把S置为空栈
   S.top=S.base;
 }

 Status StackEmpty(SqStack S)
 { // 若栈S为空栈,则返回TRUE,否则返回FALSE
   if(S.top==S.base)
     return TRUE;
   else
     return FALSE;
 }

 int StackLength(SqStack S)
 { // 返回S的元素个数,即栈的长度
   return S.top-S.base;
 }

 Status GetTop(SqStack S,SElemType &e)
 { // 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
   if(S.top>S.base)
   {
     e=*(S.top-1);
     return OK;
   }
   else
     return ERROR;
 }

 void Push(SqStack &S,SElemType e)
 { // 插入元素e为新的栈顶元素
   if(S.top-S.base>=S.stacksize) // 栈满,追加存储空间
   {
     S.base=(SElemType *)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(SElemType));
     if(!S.base)
       exit(OVERFLOW); // 存储分配失败
     S.top=S.base+S.stacksize;
     S.stacksize+=STACK_INCREMENT;
   }
   *(S.top)++=e;
 }

 Status Pop(SqStack &S,SElemType &e)
 { // 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
   if(S.top==S.base)
     return ERROR;
   e=*--S.top;
   return OK;
 }

 void StackTraverse(SqStack S,void(*visit)(SElemType))
 { // 从栈底到栈顶依次对栈中每个元素调用函数visit()
   while(S.top>S.base)
     visit(*S.base++);
   printf("\n");
 }

                                                   循环队列

存储结构

 #define MAX_QSIZE 5 // 最大队列长度+1
 struct SqQueue
 {
   QElemType *base; // 初始化的动态分配存储空间
   int front; // 头指针,若队列不空,指向队列头元素
   int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置
 };



基本操作:

  

void InitQueue(SqQueue &Q)
 { // 构造一个空队列Q
   Q.base=(QElemType *)malloc(MAX_QSIZE*sizeof(QElemType));
   if(!Q.base) // 存储分配失败
     exit(OVERFLOW);
   Q.front=Q.rear=0;
 }

 void DestroyQueue(SqQueue &Q)
 { // 销毁队列Q,Q不再存在
   if(Q.base)
     free(Q.base);
   Q.base=NULL;
   Q.front=Q.rear=0;
 }

 void ClearQueue(SqQueue &Q)
 { // 将Q清为空队列
   Q.front=Q.rear=0;
 }

 Status QueueEmpty(SqQueue Q)
 { // 若队列Q为空队列,则返回TRUE;否则返回FALSE
   if(Q.front==Q.rear) // 队列空的标志
     return TRUE;
   else
     return FALSE;
 }

 int QueueLength(SqQueue Q)
 { // 返回Q的元素个数,即队列的长度
   return(Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE;
 }

 Status GetHead(SqQueue Q,QElemType &e)
 { // 若队列不空,则用e返回Q的队头元素,并返回OK;否则返回ERROR
   if(Q.front==Q.rear) // 队列空
     return ERROR;
   e=Q.base[Q.front];
   return OK;
 }

 Status EnQueue(SqQueue &Q,QElemType e)
 { // 插入元素e为Q的新的队尾元素
   if((Q.rear+1)%MAX_QSIZE==Q.front) // 队列满
     return ERROR;
   Q.base[Q.rear]=e;
   Q.rear=(Q.rear+1)%MAX_QSIZE;
   return OK;
 }

 Status DeQueue(SqQueue &Q,QElemType &e)
 { // 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
   if(Q.front==Q.rear) // 队列空
     return ERROR;
   e=Q.base[Q.front];
   Q.front=(Q.front+1)%MAX_QSIZE;
   return OK;
 }

 void QueueTraverse(SqQueue Q,void(*vi)(QElemType))
 { // 从队头到队尾依次对队列Q中每个元素调用函数vi()
   int i;
   i=Q.front;
   while(i!=Q.rear)
   {
     vi(Q.base[i]);
     i=(i+1)%MAX_QSIZE;
   }
   printf("\n");
 }



    

《数据结构:C语言版》(严蔚敏)——读书笔记(一) 工作一年之后,想考研,先看看数据结构。 阅读详情

相关推荐

读书笔记-数据结构C语言版

数据元素之间的逻辑结构:集合,线性结构,树形结构,图形结构或网状结构 物理结构:顺序存储结构和链式存储结构   任何算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。   线性表是n个数据元素的有限序列。称i为数据元素ai在线性表中的位序。线性表示一个相当灵活的数据结构,它的长度可根据需要增长或缩短,可访问/插入/删除。 线性表的顺序表示指的是一组地址连续的存储

vivien_shaw的博客 1万+

数据结构学习笔记(c语言版)

文章目录一、概念1.基本术语2.算法3.时间复杂度4.数据的逻辑结构二、线性表1.存储结构2.基本操作三、栈1.存储结构2.基本操作3.实际应用四、队列1.存储结构2.基本操作五、串1.存储结构2.基本操作六、矩阵1.存储结构七、广义表1.存储结构八、树1.存储结构九、二叉树1.存储结构2.基本操作3.实际应用十、图1.存储结构2.基本操作十一、查找1.实际应用十二、内部排序 一、概念 1.基本术语 术语 解释 数据 对客观事物的符号表示 数据元素 数据的基本单位,由若干个数据项组成

qq_50737715的博客 5175

从C++到C——我的C语言学习笔记

刚上大学就学习了C++,有人跟我说C++包括了C语言,学过C++就没有必要在弄C语言了。也有人说,C语言是程序员的通用语言,我们都应该花时间好好研究一下。之前也有看过一些书,这些书的作者也都建议读者学好C,而且强调不是C++。一直都有学习C语言的打算,直到我尝试写C程序发现编译都

...... 3137

栈和队列(数据结构C语言版)

栈和队列是两种重要的线性结构。从数据结构角度看,它们都属于线性表,但它们属于有限定性的数据结构。从数据类型角度来看,它们是和线性表不相同的两类重要的抽象数据类型。一、栈和队列的定义和特点栈是限定仅在表尾进行插入和删除操作的线性表。对栈来说,表尾端叫栈顶,表头端叫栈底。不含元素的空表叫空栈。栈中元素的修改是按后进先出的原则进行的。因此,栈又称为后进先出的线性表。如下图所示:在日常生活中有很多这样的例子:如我们平时用的纸先放进去的后使用,后放进去的先使用。队列和栈是有区别的,

woshihaoren__的博客 3373

数据结构(c语言版的)初学者笔记大全

数据结构(c语言版的)初学者笔记大全,适用域所有初学者,里面的代码都是编译通过的

数据结构C语言版知识点

数据结构C语言版知识点,严蔚敏版数据结构书籍

数据结构学习有感

杂谈 这两天已经开始看数据结构了,尽管c语言还是懵懵懂懂。我学习的课本是 严蔚敏老师的《数据结构》(c语言版)。其实我数买了一段时间,但是一直摸有开始,原因很简单,看不懂结构体。经常看到一大堆莫名其妙的引用 访问什么的,瞬间头大。所以我就抽时间去吧结构体学了一下。 学完结构体我寻思着,可以看看看数据结构了吧,我还是太年轻了。 数据结构 主要是数据和数据之间的关系 以及存储形式(我目前的认知)。单说...

jiewaikexue的博客 2719

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取

本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确

2401_87383958的博客 2358

《数据结构与算法分析:C语言描述》读书笔记及课后习题解答

找了很久才找到的,写的很好,希望能帮助到正在看这本书的大家~ 读书笔记https://www.cnblogs.com/zhuli19901106/p/data-structure-and-algorithm-analysis-in-C.html 课后习题解答https://github.com/xxks-kkk/algo ...

qq_43365825的博客 4596

Mac上安装Label Studio

以上步骤详细说明了如何在Mac上通过Anaconda安装Label Studio。记得根据你的具体需求选择是否创建新的环境,并使用conda或pip进行安装。安装完成后,务必验证Label Studio是否成功运行。

g2526的博客 1959

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 911

《数据结构与算法分析:C语言描述》读书笔记

作为一名大一新生,正在学习C语言编程。大一上学期接触的是python,但也只是了解python的语法以及一些常用函数。在日常刷题时总是感觉很难受,因为用来用去都是几个最简式的数据结构,而算法大部分都是穷举的方法。于是正好趁着现在在学习C语言,然后师兄又推荐这本书,正好可以系统地了解一下算法与数据结构。 但是我对事物总是只有三分热度,为了更好的坚持下去,决定将该书的读书笔记作为我的第一篇博客。希望每天都可以学习几页,写一篇读书笔记,因为知识有限,可能会有很多不正确的观点,假如有同学看到,随时指正。OK...

m0_57927118的博客 1746

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

850

《数据结构和算法分析—C语言描述》读书笔记

第一章主要讲的是数学知识的复习,指数,级数什么的,最后,浅层次的谈了一下递归。   当一个函数用它自己来定义时就称为是递归(recursive)的,C语言是允许递归的。但重要的是要记住,C提供的仅仅是遵循递归思想的一种企图。不是所有的数学递归函数都能有效地或者正确地由C的递归模拟来实现。   举个递归的小例子:   int x   F(int X)   {       if(0 ==

wujiafei_njgcxy的博客 4322

uniapp(微信小程序) - 实现uniapp小程序电子签名板,横屏手写姓名签名专用写字画板,客户专用签字板,手写签名签字画板组件,手写签名,(详细运行示例,一键复制开箱即用)

uniapp实现微信小程序的电子签名效果,uniapp微信小程序 电子签名 写字板,用uniapp实现微信小程序的电子签名,uniapp微信小程序canvans实现手写签名,记录一个uniapp写的小程序的手写板,横屏,用于签名,unniapp实现电子签名,uniapp怎么做横屏的手写签名,uniapp如何实现签字板,uniapp小程序平台下怎么做电子签名板组件,uniapp电子签名插件,uniapp最好用的电子写字板插件组件源码,实现uniapp 手写签名功能,手写板、签字板,uni-app插件市场最好的

✅ 精选推荐文章 1万+

【AutoSAR】【BootLoader】AutoSAR Bootloader 原理与流程

目录 一、HIS规范 二、BOOTLOADER软件架构 三、烧写流程 一、HIS规范 国外整车厂意识到在线刷新ECU的重要性,由奥迪公司、宝马公司、戴姆勒公司、保时捷公司、大众公司成立一个委员会,名为HIS委员会,专门负责帮助汽车制造商掌握微处理器控制单元软件和质量保证领域的原理和方法; HIS Bootloader的主要功能是通过标准的通信接口对ECU进行再编程 。 HIS Bootloader的软件设计基于AUTOSAR体系架构、ISO14229、ISO15765-2、HI...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5250

《C语言程序设计》读书笔记

写在前面:   《C程序设计》可以说是一本再基础不过的编程书了,但每读一遍的感觉却都是不同的,可以说,每读一遍,都会有很多新的收获。真所谓老书再读,回味无穷啊!此笔记是《C程序设计》谭浩强编著,清华大学出版社出版。除了将书中的重点知识点记下来外,也加入了我对知识点的理解,我想这一点是读书笔记的重要性所在。 第一章 概述 第二章 数据类型、运算符与表达式 第三章 最简单的c程序设计 第四章 逻辑运算

听风的专栏 1万+

YOLOv11改进 | 缝合CCFM轻量检测模型实现高精度跨尺度特征融合【附参考代码】

YOLOv11作为一代优秀的端到端目标检测模型,已经在速度和精度之间取得了较好的平衡。但其默认的Neck结构(通常为FPN + PAN)在处理小目标与多尺度信息时,仍存在信息流冗余、跨尺度特征融合不充分等问题。 本文提出一种轻量化的跨尺度跨通道融合模块(CCFM, Cross-scale and Cross-channel Fusion Module),以替代或增强YOLOv11中的Neck部分,有效提升特征表达能力和检测性能,尤其是在小目标和复杂场景下取得显著涨点。

一键难忘的博客 1415

20200716_数据结构C++语言版_读书笔记02

20200716_数据结构C++语言版_读书笔记02 每日小知识 xboxone手柄连接完电脑后再连接XBOX,会经常出现无法匹配的问题,解决方法为先开主机,再开手柄。——所以一个手柄不要来回切换信号,会有配对BUG。 一、相关术语 欧几里得 欧几里得几何是现代公理系统的鼻祖。从计算的角度看,针对不同的任何问题,欧氏任何都给出了一套几何作图流程。 二、相关内容 第1章,绪论。 1.1 计算机与算法 1.1.3 起泡排序 排序的概念:将给定的一组元素顺序排列,比如将n个整数按通常的大小次序排成一个非降序列

丰哥的专栏 495

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

王老师青少年编程 1719

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构(C语言描述)读书笔记之二叉树

树是树型结构的简称。若树中各节点的子树是按照一定的次序从左到右安排的,则称之为有序树,否则称为无序树。     森林是m(m>=0)棵互不相交的树的集合。     树的性质:     1,树中的结点数等于所有结点的度数加1.     2,度为k的树中第i层上至多有k^(i-1)个结点(i>=1).     3,深度为h的k叉树至多有(k^h-1)/(k-1)个结点。     4,具有n

一片孤城万仞山 932

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

20200714_数据结构C++语言版\_读书笔记01

20200714_数据结构C++语言版_读书笔记01 每日小知识 搜狗拼音有两个进程是广告,一个是SGNews.exe,还有一个是【homenewsofsg.exe】。 一、相关术语 ENIAC 全称为【electronic numerical integrator and computer】,电子数字积分计算机。 二、相关内容 第1章,绪论。 1.1 计算机与算法 1.1.1 古埃及人的绳索 算法描述: perpendicular(1,A) 输入:直线1及其上一点A 输出:经过A且垂直于1的直线 1、

丰哥的专栏 497

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

读书笔记 数据结构(c语言版)

空

baidu_34674626的博客 828

c语言数据结构链表源代码----笛风读书笔记系列

读书笔记系列之:c语言数据结构链表                                                                               笛风                                                                               2013.10.11 在li

u012090276的专栏 830
上一篇: 数据结构读书笔记(二)(C语言)
下一篇: 面试准备(常用函数和数据结构)freopen (在程序调试时从文本输入,程序结果放在文本中)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值