自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 二叉树的遍历

二叉树的遍历:目的:得到树所有节点的一个线性排列用途:是树结构插入,删除,修改,查找和排序运算的前提,是二叉树一切运算的基础和核心(主要)遍历方法:DLR(先访问根节点,再遍历左子树,再遍历右子树):先(根)序遍历,左子树和右子树的遍历和先序遍历一致,即先访问左子树的根节点,再按先序遍历依次查询,右子树也一样。一下遍历方式同理。

2024-01-07 21:17:53 778

原创 二叉树的顺序和链式存储结构和三叉链表的定义

在n个节点的二叉链表中,必有2n个链域,除根节点外,每个节点有且仅有一个双亲,所以只会有n-1个节点的链域存放指针,指向非空子女节点,空指针数目=2n-(n-1)=n+1。特点:节点间关系蕴含在其存储位置中,浪费空间,适用于存满二叉树和完全二叉树。的节点层次编号,依次存放二叉树中的数据元素。节点结构:左孩子,右孩子,双亲,数据域。节点结构:左孩子,右孩子,数据域。

2024-01-02 10:32:50 372

原创 二叉树,满二叉树和完全二叉树的性质

深度为k的具有n个节点的二叉树,其每一个节点都与深度为k的满二叉树中编号为1到n的节点一一对应。性质3:对于任何一颗二叉树T,如果其叶子数为n0,度为2的节点为n2,那么n0=n2+1。(1)如果i=1,则节点i是二叉树的根,无双亲,如果i>1,则其双亲结点为[i/2]性质2:深度为k的二叉树至多有(2^k)-1个节点(k>=1),至少有k个节点。(2)如果2i>n,则节点i为叶子节点,无左孩子,否则,其左孩子是节点2i。(3)如果2i+1>n,则节点i无右孩子,否则,其右孩子是节点2i+1。

2024-01-01 21:00:10 368

原创 树和二叉树的相关概念

定义:二叉树是由n个结点的有限集,它或者是空集(n=0)或由一个根节点及两颗互不相交的分别称为这个根的左子树和右子树的二叉树组成。森林:由m(m>=0)棵互不相交的树的集合,树一定是森林,森林不一定是树。节点的子树的跟称为该节点的孩子,该节点称为孩子的双亲。节点的祖先:从根到该节点所经分支上的所有节点。节点的子孙:以某节点为跟的子树中的任一节点。根节点:非空树中无前驱节点的节点。内部节点:除根节点以外的分支节点。兄弟节点:拥有共同双亲的节点。树的深度:树中结点的最大层次。节点的度:节点拥有的子树数。

2024-01-01 19:19:26 331

原创 串的简介和操作

算法种类:1.BF算法,暴力破解法,采用穷举法的思路,从主串的每一个字符开始一次与子串( 模式串)的字符进行匹配,时间效率较差,时间复杂度为O(n*m),m,n分别为主串子 串长度。直到主串的一个连续子串字符序列与模式串相等,返回S中与T匹配的子序列的第一个字符的序号,否则返回0。串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相等时,这两个串才是相等的。空格串:由一个或多个空格组成的串,与空串不同。

2023-12-28 17:43:23 360

原创 链队的操作

若用户无法估计所用队列的长度,则宜用链队列。思路:从队头节点开始,依次释放所有节点。

2023-12-25 21:20:41 339

原创 循环队列的操作

队列是仅在表尾进行插入操作(入队),在表头进行删除操作的线性表(出队)。顺序队入队和出队操作后需要调整其他元素的位置,所以用循环顺序队。队列的存储结构为链队或顺序队(常用循环顺序队)

2023-12-25 11:27:15 331

原创 栈与递归

1.能将一个问题转变成一个新问题,而新问题与原问题的解法相同或类同,不同的仅是处理的对象,且这些处理对象是变化有规律的。缺点:每次调用要生成工作记录,保存状态信息,入栈;返回时要出栈,恢复状态信息。时间开 销大。用分治法求解,即对于一个复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解。3.必须有一个明确的递归出口,或称递归的边界。方法一:尾递归,单项递归->循环结构。2.可以通过上述转化而使问题简化。方法二:自用栈模拟系统的运行时栈。优点:结构清晰,程序易读。

2023-12-20 20:45:01 338

原创 链栈的操作

链栈是运算受限的单链表,只能在链表头部进行操作。将要删除的节点的数据域赋值给e用于返回。将S的指针指向新的栈顶元素。插入和删除仅在栈顶处执行。将S赋值给p用于最后删除。空栈相当于头指针指向空。将新节点的数据域置为e。链表的头指针就是栈顶。基本不存在栈满的情况。

2023-12-19 18:16:16 345 1

原创 顺序栈的各种操作

附设top和base指针,指示栈顶元素和栈底元素在顺序栈中的位置(为了方便操作,通 常top指向真正的栈顶元素之上的下标位置)存储方式:与一般线性表的顺序存储结构完全相同,利用一组地址连续的存储单元依次存放自栈 底到栈顶的数据元素。栈中元素个数:top-base(当top和base都指向同一数组才可以使用)下溢:栈空弹出元素(一般认为是一种结束条件,即问题处理结束)上溢:栈满压入元素(错误,使问题的处理无法进行)

2023-12-19 17:35:40 331 1

原创 栈的操作

StackEmptty(S):若栈S为空栈,则返回TRUE,否则返回FALSE。Pop(&S,e):删除栈顶元素an,并用e返回。StackLength(S):求栈的长度并返回。Push(&S,e):插入元素e为新的栈顶元素。InitStack(&S):构造一个空栈S。DestroyStack(&S):销毁栈S。GetTop(S,&e):用e返回栈顶元素。ClearStack(&S):将S清为空栈。

2023-12-19 16:10:03 294 1

原创 栈和队列的定义和特点

栈和队列只能在端点进行插入删除操作(栈和队列是插入删除位置受限的线性表)表尾(an)称为栈顶(Top),表头(a1)称为栈底(Base)从栈顶(表尾)删除最后一个元素的操作,POP(y)只能在表尾(an)插入,只能在表头(a1)删除。队列只能在第n+1个位置插入,在第1个位置删除。插入元素到栈顶(表头)的操作,PUSH(x)栈具有后进先出的特性,队列具有先进先出的特性。栈只能在第n+1个位置插入,在第n个位置删除。顺序队或链队(循环顺序队列更常见)顺序栈或链栈(顺序栈更常见)

2023-12-15 18:09:32 413

原创 双向链表的插入删除操作

双向链表结构具有对称性,即p->prior->next=p=p->next->prior。如果是非空表那么头节点prior为空,尾节点next为空。先使x的prior指向a,然后让a的next指针指向x。使x的next指向b,然后让b的prior指针指向x。假设需要插入的节点为x,前驱为a,后继为b。设前驱为x,要删除的节点为y,后继为z。让头节点的前驱指针指向链表的尾节点。让尾节点的后续指针指向头节点。

2023-12-14 20:37:52 406 1

原创 循环链表及其合并

用尾节点寻找头节点的后继节点时间复杂度为O(1);(即R->next->next)用尾节点寻找最后一个节点时间复杂度为O(1),即(R,R为尾节点的指针)将第一个表的尾指针指向第二个表的第一个节点(头节点的后续结点)=L或p->next!(p为当前节点,L为头结点)用头指针寻找最后一个节点时间复杂度为O(n)可以从表中任一节点出发均可找到表中其他节点。第二个表的尾指针指向第一个表的头节点。表中最后一个节点的指针域指向头节点。表的操作常常是在表的首尾位置上进行。保存第一个表的头节点。释放第二个表的头节点。

2023-12-13 20:09:58 325 1

原创 单链表的整表创建和删除

让L的头结点的指针指向NULL,即建立一个带头结点的单链表。生成的链表中节点的次序和输入的顺序相反。将第一个节点赋值给p,下一节点赋值给q。将新加入的元素放在表头后的第一个位置。先让新节点的next指向头节点之后。循环执行释放p和将q赋值给p的操作。通过循环完成后续结点的赋值和插入。然后让表头的next指向新节点。声明一节点p和计数器变量i。创建一个只有头节点的空链表。

2023-12-12 16:34:31 316

原创 单链表概念及查找插入删除操作

先使s指针指向下一个元素,再让第i-1位元素指针指向s(顺序不能搞反,顺序弄反会导致死循环)执行删除语句p->next=p->next->next或p->next=q->next。指针域中存储的信息称为指针或链,这两部分信息组成数据元素称为存储映像,称为结点。头指针是链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。把存储数据元素信息的域称为数据域,把存储直接后续位置的域称为指针域。链表中第一个结点的存储位置叫做头指针,最后一个结点指针为空。存储存取数据元素的信息和后继元素的存储地址。

2023-12-12 15:07:52 393

原创 线性表的顺序存储操作

status 是一个自定义的枚举类型,用于表示函数执行状态的返回值。通常情况下,它的取值包括 OK 和 ERROR 两种,分别表示函数执行成功和失败的状态。1.存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置。从删除元素位置开始遍历到最后一个元素位置,分别将它们向前移动一个位置。由此可知,线性表顺序存储适合元素个数稳定,不经常插入和删除元素的情况。2.线性表的最大存储容量:数组的长度MAXSIZE。

2023-12-11 19:11:44 311 1

原创 线性表定义及操作

5.LocateElem(L,e):在线性表L中查找与给定值e相等的元素,若查找成功,返回该元素在表中序号表示成功,否则,返回0表示失败。2.ListEmpty(L):判断线性表是否为空表,若线性表为空,返回true,否则返回false。7.ListDelete(*L,i,e):删除线性表L中第i个位置元素,并用e返回其值。6.ListInsert(*L,i,e):在线性表L中第i个位置插入新元素e。4.GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e。1.线性表是有顺序的。

2023-12-11 10:40:54 346 1

原创 用c++做拼数

来源:牛客网。

2023-09-24 20:28:16 162 1

原创 sort排序的用法

第一个参数指向第一个元素的指针,第二个参数指向最后一个元素下一个位置的指针,cmp不写默认从小到大排序。在数组中第一个元素的地址为数组名(不加中括号)使用sort()函数需要加算法头文件。自定义一个比较函数放在第三个参数。第一种用法:从小到大排序。第二种用法:从大到小。

2023-09-24 16:21:04 42 1

原创 校门外的树

来源:牛客网。

2023-09-23 15:32:36 41 1

原创 有理数加法

本题要求编写程序,计算两个有理数的和。

2023-09-22 17:30:51 36 1

原创 猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

2023-09-21 22:14:21 34

原创 PTA基础编程题目集6-7统计某类完全平方数

其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。

2023-09-20 21:46:55 644 5

原创 初识数据类型

sizeof关键字:计算类型或者变量所占空间的大小。char:字符串类型(用单引号括起来)long long:长长整型。

2023-09-19 21:18:00 19

原创 初识C语言

初识C语言注意事项

2023-09-19 20:46:56 23

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除