中国建设银行北海招聘信息网站龙岗做网站公司

diannao/2025/10/15 4:50:15/文章来源:
中国建设银行北海招聘信息网站,龙岗做网站公司,官方网站下载zoom,wordpress木木主题一、栈 1.1、栈的基本概念 1.1.1、栈的定义 栈#xff08;Stack#xff09;#xff1a;是只允许在一端进行插入或删除的线性表。首先栈是一种线性表#xff0c;但限定这种线性表只能在某一端进行插入和删除操作。 栈顶#xff08;Top#xff09;#xff1a;线性表允许… 一、栈 1.1、栈的基本概念 1.1.1、栈的定义 栈Stack是只允许在一端进行插入或删除的线性表。首先栈是一种线性表但限定这种线性表只能在某一端进行插入和删除操作。 栈顶Top线性表允许进行插入删除的那一端。栈底Bottom固定的不允许进行插入和删除的另一端。空栈不含任何元素的空表。 1.1.2、栈的操作 void STInit(ST* ps); //初始化栈 void STDestory(ST* ps); //销毁栈 bool STEmpty(ST* ps); //判断是否为空 void STPush(ST* ps, STDataType x); //入栈 void STPop(ST* ps); //出栈 STDataType STTop(ST* ps); //取栈顶元素 int STSize(ST* ps); //返回栈元素个数 1.2、栈的顺序存储结构 采用顺序存储的栈称为顺序栈它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素同时附设一个指针top指示当前栈顶元素的位置。 栈的顺序存储结构可描述为 动态存储结构 typedef struct Stack {STDataType *a;int top;int capacity; //容量 }ST; 静态存储结构 //静态存储结构 #define N 10 typedef struct Stack {STDataType data[N];int top; }ST; 顺序栈的函数实现  1.初始化栈 void STInit(ST* ps) //初始化栈 {assert(ps);ps-a NULL;ps-top 0;ps-capacity 0; }2.销毁栈 void STDestory(ST* ps) //销毁栈 {assert(ps);free(ps-a);ps-a NULL;ps-top 0;ps-capacity 0; } 3.判断是否为空 bool STEmpty(ST* ps) //判断是否为空 {assert(ps);return (ps-top 0); } 4.入栈  void STPush(ST* ps, STDataType x) //入栈 {assert(ps);//扩容if (ps-top ps-capacity){int newcapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDataType* tem (STDataType*)realloc(ps-a,sizeof(STDataType)* newcapacity);if (tem NULL){perror(malloc);exit(-1);}ps-a tem;ps-capacity newcapacity;}ps-a[ps-top] x;ps-top; } 5.出栈 void STPop(ST* ps) //出栈 {assert(ps);assert(ps-top0);--ps-top; } 6.取栈顶元素 STDataType STTop(ST* ps) //取栈顶元素 {assert(ps);assert(ps-top 0);return ps-a[ps-top-1]; }7.返回元素个数 int STSize(ST* ps) //返回栈元素个数 {assert(ps);return ps-top ; } 1.3、栈的链式存储结构 1、链栈 采用链式存储的栈称为链栈链栈的优点是便于多个栈共享存储空间和提高其效率且不存在栈满上溢的情况。通常采用单链表实现并规定所有操作都是在单链表的表头进行的。这里规定链栈没有头节点Lhead指向栈顶元素如下图所示。 对于空栈来说链表原定义是头指针指向空那么链栈的空其实就是topNULL的时候。 链栈的结构代码如下 /*栈的链式存储结构*/ /*构造节点*/ typedef struct StackNode{ElemType data;struct StackNode *next; }StackNode, *LinkStackPrt; /*构造链栈*/ typedef struct LinkStack{LinkStackPrt top;int count; }LinkStack;2、链栈的进栈 对于链栈的进栈push操作假设元素值为e的新节点是stop为栈顶指针。 代码如下 /*插入元素e为新的栈顶元素*/ Status Push(LinkStack *S, ElemType e){LinkStackPrt p (LinkStackPrt)malloc(sizeof(StackNode));p-data e;p-next S-top; //把当前的栈顶元素赋值给新节点的直接后继S-top p; //将新的结点S赋值给栈顶指针S-count;return OK; }3、链栈的出栈 链栈的出栈pop操作也是很简单的三句操作。假设变量p用来存储要删除的栈顶结点将栈顶指针下移以为最后释放p即可。 代码如下 /*若栈不空则删除S的栈顶元素用e返回其值并返回OK否则返回ERROR*/ Status Pop(LinkStack *S, ElemType *e){LinkStackPtr p;if(StackEmpty(*S)){return ERROR;}*e S-top-data;p S-top; //将栈顶结点赋值给pS-top S-top-next; //使得栈顶指针下移一位指向后一结点free(p); //释放结点pS-count--;return OK; }二、队列 2.1、队列的基本概念 2.1.1、队列的概念 队列queue是只允许在一端进行插入操作而在另一端进行删除操作的线性表。 队列是一种先进先出First In First Out的线性表简称FIFO。允许插入的一端称为队尾允许删除的一端称为队头。 队头Front允许删除的一端又称队首。队尾Rear允许插入的一端。空队列不包含任何元素的空表。 2.1.2、队列的基本操作 void QueueInit(Que* pq); //初始化队列 void QueueDestory(Que* pq); //销毁队列 bool QueueEmpty(Que* pq); //判断队列是否为空 void QueuePush(Que* pq, QDataType x);//进队列 void QueuePop(Que* pq); //出队列 QDataType QueueFront(Que* pq); //取队头元素 QDataType QueueBack(Que* pq); //取队尾元素 int QueueSize(Que* pq); //返回元素个数 2.2、队列的顺序存储结构 队列的顺序实现是指分配一块连续的存储单元存放队列中的元素并附设两个指针队头指针 front指向队头元素队尾指针 rear 指向队尾元素的下一个位置。 2.2.1、顺序队列 队列的顺序存储类型可描述为: typedef int QDataType;typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct Queue {QNode* head; //队头指针QNode* tail; //队尾指针int size; //元素个数 }Que; 初始状态队空条件Q-front Q-rear 0。 进队操作队不满时先送值到队尾元素再将队尾指针加1。 出队操作队不空时先取队头元素值再将队头指针加1。 如图d队列出现“上溢出”然而却又不是真正的溢出所以是一种“假溢出”。 2.2.2、循环队列 解决假溢出的方法就是后面满了就再从头开始也就是头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。 当队首指针Q-front MAXSIZE-1后再前进一个位置就自动到0这可以利用除法取余%来实现。 那么循环队列队空和队满的判断条件是什么呢 显然队空的条件是 Q-front Q-rear 。若入队元素的速度快于出队元素的速度则队尾指针很快就会赶上队首指针如图( d1 所示此时可以看出队满时也有 Q -front Q - rear 。 为了区分队空还是队满的情况有三种处理方式 1牺牲一个单元来区分队空和队满入队时少用一个队列单元这是种较为普遍的做法约定以“队头指针在队尾指针的下一位置作为队满的标志”如图 ( d2 所示。 队满条件 (Q-rear 1)%Maxsize Q-front队空条件仍 Q-front Q-rear队列中元素的个数 (Q-rear - Q -front Maxsize)% Maxsize 2类型中增设表示元素个数的数据成员。这样队空的条件为 Q-size O 队满的条件为 Q-size Maxsize 。这两种情况都有 Q-front Q-rear。 3类型中增设tag 数据成员以区分是队满还是队空。tag 等于0时若因删除导致 Q-front Q-rear 则为队空tag 等于 1 时若因插入导致 Q -front Q-rear 则为队满。 循环队列基本算法 1循环队列的顺序存储结构 typedef int ElemType; //ElemType的类型根据实际情况而定这里假定为int #define MAXSIZE 50 //定义元素的最大个数 /*循环队列的顺序存储结构*/ typedef struct{ElemType data[MAXSIZE];int front; //头指针int rear; //尾指针,若队列不空指向队列尾元素的下一个位置 }SqQueue;2循环队列的初始化 /*初始化一个空队列Q*/ Status InitQueue(SqQueue *Q){Q-front 0;Q-rear 0;return OK; }3循环队列判队空 /*判队空*/ bool isEmpty(SqQueue Q){if(Q.rear Q.front){return true;}else{return false;} }4求循环队列长度 /*返回Q的元素个数也就是队列的当前长度*/ int QueueLength(SqQueue Q){return (Q.rear - Q.front MAXSIZE) % MAXSIZE; }5循环队列入队 /*若队列未满则插入元素e为Q新的队尾元素*/ Status EnQueue(SqQueue *Q, ElemType e){if((Q-rear 1) % MAXSIZE Q-front){return ERROR; //队满}Q-data[Q-rear] e; //将元素e赋值给队尾Q-rear (Q-rear 1) % MAXSIZE; //rear指针向后移一位置若到最后则转到数组头部return OK; }6循环队列出队 /*若队列不空则删除Q中队头元素用e返回其值*/ Status DeQueue(SqQueue *Q, ElemType *e){if(isEmpty(Q)){return REEOR; //队列空的判断}*e Q-data[Q-front]; //将队头元素赋值给eQ-front (Q-front 1) % MAXSIZE; //front指针向后移一位置若到最后则转到数组头部 }到这里栈和队列的基本问题就解释完了相信多多少少会解决大家心头的疑问在数据结构的学习中应当善于思考多画图死磕代码注意细节将伪代码转换为代码这样才能很好的掌握数据结构的有关知识共勉加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业集团网站源码手机能看禁止网站的浏览器

目录 1.煤球数量; 2.生日蜡烛; 3.凑算式 4.方格填数 5.四平方和 6.交换瓶子 7.最大比例 1.煤球数量 题目解析:可以根据题目的意思,找到规律。 1 *- 1个 2 *** 3个 3 ****** 6个 4 ********** 10个 不难发现 第…

网站源码生成器水滴查企业查询

文章目录八皇后问题解决思路代码实现运行结果八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击&#x…

南京小程序开发网站制在线做网站 自动生成手机版

这里我想首先说明一下,虽然我们经常会拿垃圾回收器来做比较,虽然想挑选一个最好的收集器出来,但是目前也没有说哪一款收集器是完美的,更不存在万能的收集器,我们也只是对收集器选择最适合场景的一个收集器。 那么作者将…

织梦中英文网站源码网站权重如何速度增加

职场口才提升之道 在职场中,口才的重要性不言而喻。无论是与同事沟通协作,还是向上级汇报工作,亦或是与客户洽谈业务,都需要具备良好的口才能力。一个出色的职场人,除了拥有扎实的专业技能外,还应具备出色…

家政服务网站做推广有效果吗太原网站制作建设

HarmonyOS是华为自主研发的面向全场景的分布式操作系统。它的技术特点主要体现在以下几个方面: 分布式架构:HarmonyOS采用了分布式架构设计,通过组件化和小型化等方法,支持多种终端设备按需弹性部署,能够适配不同类别的…

ftp网站上传之后怎么办邵东微网站建设

一、背景知识 前面由于定轨的大作业,关于Astrogator模块的学习有所滞后,在本节将重新聚焦Astrogator模块,在本节中,首先解决的问题是已知两个卫星的轨道六根数,求解其中某一颗卫星LVLH坐标下另一颗卫星的位置速度。这…

钓鱼网站教程010-58813333 可信网站

为什么80%的码农都做不了架构师?>>> 马年春节即将来临,在过去的一年,U-Mail邮件服务器从用户需求出发,围绕着为用户打造稳定、安全、高效、易操作、助管理的邮件系统目标,三军用命,取得了不俗业…

企业官方网站怎么写中国外贸人才网官网

栈 一、栈的定义 栈是(stack)是限定尽在表尾进行插入和删除操作的线性表。 栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。 二、进栈出栈变化形式 注意: 并不是最新进栈的元素只能最后处栈。如,我们…

企业电子商务网站的建设阶段美篇制作app下载安装免费

3.2、当前项目规划 完成项目最基本的用户权限管理,即添加用户,添加角色,用户登录后根据权限的不同获取不同的菜单。转载于:https://www.cnblogs.com/seem111111/p/10945125.html

网站怎么做图片搜索网站开发怎么做才有利于seo

文章目录 什么是线程什么是进程进程的组成什么是pcb 进程概括线程线程与进程的关系线程的特点 创建线程创建线程方法创建线程的第二种方法对比 其他的方式匿名内部类创建线程匿名内部类创建Runable的子类lambda表达式创建一个线程 多线程的优势 什么是线程 什么是进程 首先想…

重庆企业网站如何推广中国做网站公司

近几期的考情来看,本章选择题稳定考4分,考案例的可能性有,需要重点学习。本章节专业知识点特别多。但是,只考课本原话,大家一定要把本章至少通读一遍,还要多刷题,巩固重点知识。 3 系统集成 3…

高端网站开发平台移动端的网站建设

某数码博主今日放出了一张华为内部关于荣耀 30 Pro 测试 HarmonyOS 的截图,图片显示该机正运行基于 HarmonyOS 2.0 开发者测试版的系统。此外,他还透露荣耀 30 系列、V30 系列、Play4 Pro 下个月将升级到华为鸿蒙系统。华为在 2019 年开发者大会上正式推…

公司招聘网站秦皇岛网站推广联系电话

点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数、欧拉角、旋转矩阵、轴角如何相互转换,本篇文章介绍如何用eigen来实现。旋转向量1,初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z)Eigen::A…

如何建淘客网站乐清新闻综合频道

问题的背景: U盘(USB闪存盘)的优点主要包括: 便携性:U盘体积小、重量轻,便于携带,可以轻松地在不同设备间传输数据。高速传输:相比传统机械硬盘,U盘的读写速度更快&…

外贸seo网站搭建网站上传图片尺寸

简介LNMP是Linux、Nginx、MySQL和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 6操作系统上搭建一套LNMP环境。 本教程适用于CentOS 6.x版本。 在安装LNMP环境之前,您需要先对CentOS操作系统做一些初始化的工作&#x…

网站建设和网站维护是什么企业网站布局960

一.广州电商公司 1.简单自我介绍 2.介绍下之前的公司离线数仓项目 3.mysql和hive区别? 4.sql的执行顺序? 5.hive的优化 6.说下你之前公司来,你的技能层次在每个公司?你怎么评价你的技能? 7.你的之前业务主要是做什么&…

贵阳网站备案核验点照相网站设计包括什么

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最线实现项目对人、机、料、法、环的全…

开源系统网站奢侈品回收

死锁的产生是因为满足了四个条件: 互斥占有且等待不可强占用循环等待 这个网站收集了很多死锁场景 接下来介绍几种常见的死锁发生场景。其中,id 为主键,no(学号)为二级唯一索引,name(姓名&am…

东莞网站建设效果知更鸟wordpress

文章目录 基本介绍看下面一段代码方式 1 的优缺点改进的思路分析 基本介绍 开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽…

秦皇岛网站建设企业html个人简历完整代码

文章目录 前言效果展示事前准备HTML、CSS、JavaScript分别负责哪些HTML和CSS构架出页面的基本结构和样式JavaScript 实现行为和交互实现服务器端的业务代码整理pom.xmlweb.xmlmessageWall.htmlMessageServlet.java 前言 前面我们学习了 Java 中知名的 HTTP 服务器 tomcat 的安…