- 博客(15)
- 收藏
- 关注
原创 二叉搜索数的实现
4,插入节点 遵循根节点的左子树都小于该节点,根节点的右子树都大于该节点,同时二叉树中不能出现相同的数字,创造出两个指针,p指针用来找到所需要插入的位置,pp指针为p指针的双亲指针,主要用来判断是需要将p指针插入进左子树还是右子树。删除结点3,这里无论是删除单支结点还是双支结点,都可以进行,如果是双支结点的话需要狸猫换太子,将所需删除结点的前驱或者后继的值覆盖在所需要删除的结点上,删除其直接前驱或者删除其直接后继。寻找直接前驱的结点,比所需要删除结点小,但是离得最近的一个值。parent:双亲指针。
2025-05-19 15:45:08
167
原创 二叉树的实现
4,二叉树的构建,用先中序来实现二叉树的构建,Find_Pos函数用来寻找先序第一个数据在中序中的下标,其中Create函数的三个参数为(先序数组,中序数组,有效值个数),逻辑为:先序的第一个数据,为根节点,在中序中找到,其左边为根节点左边的数据,右边为根节点右边的数据。5,用中后序数组,来实现二叉树的构建,其中代码与先中序大致相似,不同点是,后序的最后一个数据为根节点,三个参数的意义为中序数组,后续数组,有效值个数。3.栈不为空,则取出栈顶节点并访问,然后将其右子节点和左子节点依次入栈(存在的话)
2025-05-18 18:50:52
176
原创 哈希函数链地址法
4.插入结点,注意运用malloc函数时,要判断是否空间是否创建成功,剩余代码与在中间插入一个结点函数相同。5,删除结点,找到删除的结点,并且找到需要删除结点的前一位,进行删除操作,与插入结点操作相同。1.链地址法有效节点结构体设计和其辅助结点结构体设计。2.寻找值的辅助结点。
2025-04-13 14:06:51
182
原创 两个栈模拟一个队列
3.删除元素,例如先插头abc,栈的功能是先删除c,但是队列的功能是先删除a,所有要先将两个栈的元素头尾调换顺序,即可实现队列功能。若空,则代表数据都在s1中,则将s1中数据挪动s2,这是s2不空,则直接从s2取值。此代码中所运用到的函数功能来自前面发布的栈的有效结构体设计。1.两个栈模拟一个队列:duilie(头删,尾插)出数据,判断s2空不空,若不空,则直接从s2取值。
2025-03-31 16:58:46
179
原创 两个队列模拟一个栈
3.删除,考虑栈的功能后进先出,例如先输出abc,应该先删除c,则先将Q2的元素转移至q1保留剩最后一个,然后将其删除。4.获取栈顶元素值,大部分代码和以上相似,不同点为,需要将最后一个元素最终转移到另一个队列当中。1.注意:这里直接运用c++自带模板,首先定义两个队列。2.插入,首先只在Q2当中加入。
2025-03-31 16:42:13
154
原创 链式队列的有效结构体设计
其辅助结点的结构体,其中front为头指针,rear为尾指针。判空,也可为plq——>front==NULL;入队分为空链表和非空链表,其中非空链表类似与尾插。查找相应的值,其中while为另一种写法。销毁,两个指针相互交换。链式队列的有效结构体。
2025-03-26 13:49:32
225
原创 链表相关的问题
5.判断一个单链表是否成环,若是找到成环点,设置快慢指针如果快慢指针相遇则存在环,快慢指针相遇的第一次位置和辅助结点同时分别置于一个慢指针,两个慢指针相遇为成环点。3.判断两链表是否存在交点,只需要判断他们的尾结点是否相同。2.删除任意一个节点,但是给的不能是尾结点的地址(4.若存在交点,找到交点的位置。1.单链表如何逆置?
2025-03-23 23:06:23
119
原创 循环队列有效结构体设计
判满,这里不能再用头指针与尾指针相遇作为判满条件(与判空重合),这里需要空出来一个格子要使得(pcq->rear+1)%MAXSIZE==pcq->front作为条件。入队,这里需要考虑到尾指针由队尾指向对头了,因为是循环队列,队尾指针并不是单纯+1,而是判断是否超出对的总长度。查找,这里需要注意当头指针与尾指针相遇时,要么是为空队列要么是为没有查询的值。出对,与入对所需要注意的点相同。判空,头指针与尾指针相遇。循环队列的结构体设计。获取对头指针元素的值。
2025-03-23 22:27:46
159
原创 链栈的有效结点的结构体设计
2.对辅助结点的结构体设计,其中count为有效结点个数,top和next作用相同,top为栈顶指针。1.首先对链栈的有效结点的结构体设计data代表数据域,next数据域。6.获取栈顶元素值 Top。注:此函数代码与单链表相似。3.对链栈进行初始化。5.删除元素(出栈)
2025-03-22 00:49:30
221
原创 对和栈列结构体设计
2.对栈的元素进行添加,Ins为扩容函数,下面会有代码,其次对栈进行判满。3.对栈的元素删除,栈的特点先进后出,只能先删除最后进的,对栈进行判空。4.对栈的元素进行查找,Top为栈顶指针,待插入的位置。1.对栈的结构体进行初始化,其中base相当于数组名。8.清空,只需要将top=0;7.获取有效结点的个数。
2025-03-22 00:32:37
214
原创 双向链表有效结点结构体设计
2.将新结点进行插入,此时需要改变的值分为3.4种情况,插入的位置前后均有有效结点,则需要改变四种地址,若插入的地方后面没有有效结点,则改变3种情况,此处有三种插入,头插,尾插,按位置插。3.将结点进行删除,此时分情况需要改变两种或一种地址域,删除结点后面存在有效结点,需要改变两种地址域,若后面不存在有效结点,则改变一种地址域,剩余情况与单链表,单循环连表相同。1.初始化先对辅助结点进行初始化,构造两个地址域,next指向下一个结点地址,prior指向上一个结点。7.查找,对结点的数据域符合的进行查找。
2025-03-15 10:02:04
176
原创 单循环链表结构体设计
改为p->next=plist;其中plist为辅助结点,其中代码不同点为按值删的代码,这次用调用search函数,并未调用Del-pos函数,两种方法均可实现。本片代码与上一篇与单链表有效结点代码相似,唯一不同点,判断尾节点的条件又p->next=NULL;
2025-03-12 00:02:06
164
原创 单链表有效结点结构体设计
3.写入插入功能,分别有头插,尾插,按位置插等三个功能,注意应该先将插入的指针域赋予为辅助结点的next,再将head->next等于新的结点,头插与尾插代码基本相似,不同点尾插需要找到最后一个结点,可以采用for循环或while循环,文中采用了while循环,按位置插入采用了for循环。进行删除功能,对头结点,以及尾结点进行删除,这里需要注意的是尾结点,需要创造一个代替结点到倒数第二位,然后再对尾结点进行删除。为了防止输入指针所指向内容为空,则需要写出判断是否为空。1.创建结构体Node。
2025-03-07 23:27:34
246
原创 线性表顺序存储结构体设计 2025/3/3
/1.对我们的 elem 用来去malloc 在堆区购买一块连续的空间。//2.若返回的位置下标为-1 返回假 若不等于-1,则此时怎么删。//1.将插入位置之后的元素,统一向后挪动,把插入位置给空出来。//1.将pos位置之后的有效值,统一向前覆盖(头先动)//1.通过调用查找函数,查找val值在顺序表中的位置。//9.销毁 (需要释放malloc购买的内存的)//按值删(只删除这个val值出现的第一次的位置)//删除当前val值出现的所有位置(1)//删除当前val值出现的所有位置(2)
2025-03-03 20:06:14
768
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅