自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 需修改栈的操作

当数据不等于-1时,数据入栈;当数据等于-1时,栈顶元素出栈;最后输出栈中剩余元素。

2024-04-02 18:35:14 112

原创 队列的操作

【代码】队列的操作。

2024-04-02 18:31:26 135

原创 双端循环队列的入列和出列

算法思想:哈哈哈,这道题,buff叠满了,循环+队列+操作受限(对头和队尾都能入队,只有队尾出队),具体知识讲解和图解在王道p79页。

2024-04-02 18:27:27 246

原创 回文数的判断

算法思想:代码是将字符串全部入栈,然后扫描字符串进行比较,直到扫描到字符串尾部,该算法需要两次扫描字符串,效率不高。可以改进代码,只将字符串的前半部分入栈,然后前半部分出栈与字符串后半部分比较,算法思想类似模式判断,再此不再赘述,此代码只需扫描字符串一次,效率高。

2024-04-02 18:23:29 171

原创 同色区域颜色置换

【代码】同色区域颜色置换。

2024-04-02 18:17:35 109

原创 表达式括号匹配

算法思想:依次读入一串字符串,若是左括号,则直接Push压进栈;如果是字符则继续读取下一个字符;如果是右括号,则与栈顶元素的左括号比较是否匹配,即‘)’与‘(’,‘】’与‘【’,‘}’与‘{’匹配;如果出现不匹配则直接打印no并停止运行;如果匹配成功则将栈顶的左括号弹出;重复上述步骤,直到所有字符串都读取完毕之后,要检查栈是否为空,即栈内是否留有左括号,如果有则返回no,如果栈空则返回yes,即表达式符合。

2024-04-02 18:15:24 162

原创 线性表求长度

【代码】线性表求长度。

2024-04-02 18:10:05 145

原创 素组主元素

依次扫描所给数组中的每一个整数,将第一个遇到的整数Num保存到c中,记录Num出现的次数为1,若遇到的下一个整数仍等于Num,则计算器加1,否则计数器减1,当计数器减到0时,将遇到的下一个整数保存到c中,计数重新记为1,开始新一轮计数,即从当前位置开始重复上述过程,直到扫描完全部元素。最后判断c中元素是否是真正的主元素:再次扫描该数组,统计c中元素出现的次数,若大于n/2,则为主元素,否则序列中不存在主元素。

2024-04-02 18:05:34 331

原创 以顺序表作为多项式存储结构的多项式加法操作

算法思想:遍历顺序表La和Lb中元素,如果指数相同则进行系数相加,La和Lb索引指针同时后移一个位置;如果Lb中指数元素小于La中指数,则插入到La当前元素前面,同时Lb索引指针后移一个位置;如果Lb中指数元素大于La中指数,则La的索引指针后移一个位置;如果La遍历完成,Lb中还有剩余元素,则将Lb中剩余元素全部插入到La尾部。此时顺序表La即为一元多项式相加的结果。

2024-04-02 17:58:16 292

原创 顺序表求集合的交集

【代码】顺序表求集合的交集。

2024-04-02 17:55:10 223

原创 数组的循环左移和右移

本题通过三次逆置实现数组循环左移,当然同样通过三次逆置可以实现数组循环右移,请读者自行体会,左移右移代码入下。

2024-04-02 17:50:59 242

原创 线性表拆分

【代码】线性表拆分。

2024-04-02 17:46:47 83

原创 顺序表比较

【代码】顺序表比较。

2024-04-02 17:44:55 95

原创 顺序表的二分查找

算法思想:有序表查找目标元素最快的方法是二分查找,如果找到目标元素,则返回目标元素索引下表,否则返回二分查找中较大索引下表high,该索引下表为目标元素x所需插入位置。

2024-04-02 17:42:02 191

原创 有序顺序表的插入

遍历顺序表,找到元素e要插入位置ith;将顺序表中ith位置及其之后元素依此后移一个单位;将元素e放到顺序表ith位置,同时顺序表长度加一。

2024-04-02 17:37:02 134

原创 删除单链表中重复出现的元素

算法思想:通过冒泡排序将无序单链表变成有序单链表,然后访问有序单链表中的每一对前驱和后继,若后继结点中的数据与前驱结点中的数据相同,则将后继结点删除;重复上述步骤,直到访问完链表中的每一对前驱和后继结点。

2024-03-30 23:09:44 407

原创 单链表的结点移动

算法思想:两次遍历链表。第一次遍历,找到数据域最大的结点和尾指针,为后面的删除和插入做准备;第二次遍历,找到最大值所在位置和他的前驱结点,将它从链表中断开删除,并尾插入到链表最后面。

2024-03-30 23:07:36 263

原创 输出单链表倒数第K个结点值

算法思想:先搜索距离第一个数据节点m个位置的结点,用指针pCur指向第m+1个结点,用pNode指向第1个结点。每次移动两个指针,当pCur指针指向空结点时,pNode指针指向倒数第m个结点,即为所求结点。

2024-03-30 23:05:04 224

原创 查找链表中的中间结点

用两个指针slow与fast一起遍历链表。slow一次走一步,fast一次走两步,那么当fast快指针为null或快指针的next为null时退出循环,slow必然位于中间。

2024-03-30 23:00:43 274

原创 单链表就地逆置

算法思想:构建一个带头结点的单链表L,然后访问链表中的每一个数据结点,将访问到的数据结点依此插入到L的头节点之后。

2024-03-30 22:56:05 486

原创 单链表求集合的交集

【代码】单链表求集合的交集。

2024-03-30 22:53:59 348

原创 有序链表的插入

【代码】有序链表的插入。

2024-03-30 22:52:29 114

原创 查找某数据在单链表中出现的次数

【代码】查找某数据在单链表中出现的次数。

2024-03-30 22:50:13 254

原创 在A中删除既在B表中出现又在C表中出现的元素

算法思想:保留La的头节点,并用pcur指针指向La链中的第一个结点,通过pcur指针遍历La中的每一个元素,并判断该元素是否在Lb和Lc链中出现,如果没有同时出现在Lb和Lc中,这尾插到La的头节点后面;重复上述步骤,直到遍历完La中的每一个元素。算法思想:每次在Lb和Lc链中找相同结点,然后在Lc中查找该相同结点;如果La中存在该相同结点,进行删除;重复上述步骤,直到三条链中任意一条链被搜索完,此时La中与其余两链的相同结点都被删除。

2024-03-30 22:33:20 515

原创 模式判断

【代码】模式判断。

2024-03-30 22:29:15 388

原创 删除单链表中所有值大于min且小于max的元素

算法思想,找到第一个大于min的结点,然后从这个结点开始访问链表中的元素,如果当前访问的元素值小于max,则将其删除,反之,则链中不存在小于max的元素,停止搜索;重复上述步骤,直到链表中元素都被访问完。

2024-03-30 22:25:55 221

原创 有序单链表的合并

【代码】有序单链表的合并。

2024-03-30 22:20:24 264

原创 归并排序【递归】

归并排序:将两个或两个以上有序表合成一个新的有序表。

2023-05-18 03:03:40 177

原创 选择排序——堆排序

(1)堆调整的过程:如果子树的根小(大)于左右孩子的较大者,那么将较大(小)者与根进行交换,交换后较大(小)者位置为根的子树是否构成子树堆;否则,重复上述步骤,继续对不满足堆的子树进行调整。(3)堆排序:大(小)根堆堆顶元素为最大(小)值,输出堆顶元素,将堆底元素送人堆顶,然后将剩余元素整理成堆;重复上述步骤,直到将全部元素有序输出。(2)建立大(小)根堆:从右到左,从下到上来访问每棵子树的根,然后将子树传入调整函数,将其调整为子树堆。需要升序排列元素,建立大根堆;需要降序排序元素,建立小根堆。

2023-05-18 02:08:32 381

原创 选择排序——简单选择排序

选择排序算法思想:每一趟(如第i趟)从后面n-i+1个待排序元素选择关键字最小(大)的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下一个元素,就不用再选了。

2023-05-18 02:04:47 295

原创 交换排序(冒泡排序,快速排序)

快速排序算法思想:在待排序表中任意选取一个pivot元素作为枢纽,通过一趟排序将待排序表划分成两部分,使得表左边元素都小于pivot,表右边元素都大于pivot,则pivot放在了最终的位置,这个过程称为一趟快速排序。然后分别递归的对两个子表重复上述过程,直到每部分内只有一个元素或者为空为止,即所有元素放到了最终的位置。冒泡排序算法思想:从前往后两两比较相邻元素值,若为逆序,则交换他们,直到序列比较完。

2023-05-15 03:06:08 109

原创 插入排序(直接插入排序,折半插入排序,希尔排序)

折半插入排序算法思想:从第二个元素开始,依次将后面元素插入前面已经排序好的序列(与直接插入排序不同的是寻找插入位置使用的是折半查找,先找到待插入位置,再统一后移元素,最后将待插入元素放到合适位置)。希尔排序算法思想:先将待排序元素按照增量分成若干子表,对各个子表分别进行直接插入排序,当整个表中元素基本有序之后,再对全体元素进行一次直接插入排序。直接插入排序算法思想:从第二个元素开始,依次将后面元素插入前面已经排序好的序列。

2023-05-14 02:43:16 93

原创 将顺序表循环左移r

算法思想:先将长度为n的序列进行逆置,再逆置前n-r个序列,再逆置后r个序列。经过三次逆置,即可得到循环左移r的顺序表。

2023-05-13 01:00:03 91

原创 设计算法逆置顺序表L

算法思想:low指针从表头向表尾移动,high指针从表尾向表头移动,同时交换每一对low元素和high元素,直到low与high指针重合,则顺序表逆置完成。

2023-05-13 00:22:57 133

原创 给定两个升序表A和B,求解A-B

算法思想:指针IndexA和IndexB分别指向表A和表B的第一个元素,如果IndexA所指元素小于IndexB所指元素,则将IndexA元素加入差集表中,并移动IndexA的指针指向下一个元素;如果IndexA所指元素大于IndexB所指元素,则移动IndexB的指针指向下一个元素;如果两指针指向元素相等,则两指针同时移动指向下一个元素。重复上述步骤,直到A与B其中一条链遍历完成,如果A链中还有剩余元素未遍历,则将其全部加入差集表中。

2023-05-13 00:12:48 117

原创 给定两个升序表A和B,求解A∩B(共同元素只能在交集中出现一次)

算法思想:指针IndexA和IndexB分别指向表A和表B的第一个元素,如果IndexA所指元素小于IndexB所指元素,则移动IndexA的指针指向下一个元素;如果IndexA所指元素大于IndexB所指元素,则移动IndexB的指针指向下一个元素;如果两指针指向元素相等,将共同元素保存后,两指针同时移动指向下一个元素,如果该元素与交集表尾元素不相等,则将其插入交集表中。重复上述步骤,直到A与B其中一条链遍历完成。

2023-05-12 23:49:30 129

原创 表A前r个元素递增有序,后n - r个元素递减有序,设计算法将表A升序排列

算法思想:将表A的第r+1到n-1个元素依次插入前r个元素中,最终使得整个表有序。

2023-05-12 23:00:26 202

原创 合并升序表A和降序表B到表A,并保持A为升序存储

算法思想:依次取La,Lb中较大的元素插入La中,直到一条链元素全部元素全部插入La中,如果Lb中元素有剩余,则将其依次插入La中,最后释放Lb存储空间。

2023-05-12 22:15:55 124

原创 合并升序表A和降序表B到表C,并使得C为升序存储

算法思想:依次取La,Lb中较小的元素插入Lc中,直到一条链元素全部元素全部插入Lc中,将另外一条链中元素依次插入Lc中,最后释放La,Lb存储空间。

2023-05-12 21:34:50 83

原创 非递减顺序表删除重复数据元素

算法思想:重前往后遍历顺序表,如果当前元素与新链的链尾元素不相同,则将其插入新链尾部,同时更新新链长度。因为新链元素个数总是小于等于旧链,故可以不另外开辟空间使用旧链创建新链。

2023-05-12 01:48:40 490

空空如也

空空如也

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

TA关注的人

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