自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】栈作业( HDU5818—合并栈操作)

【样例输入】9push A 0push A 1push B 3pop Apush A 2merge A Bpop Apop Apop A【样例输出】1230【样例说明】测试数据从文件"in.txt"中读入。

2024-10-04 14:37:21 230

原创 【数据结构】栈作业(LeetCode150—逆波兰表达式求值)

逆波兰表达式也就是后缀表达式,对后缀表达式的求解步骤如下:初始化一个操作数栈,对后缀表达式进行遍历,遇到数字就直接入栈(在这里涉及到字符串到数字的转化),遇到操作符就出栈两个数,进行相应的运算之后,再将运算结果入栈。最后栈中的数字就是该表达式的计算结果。在这道题中,要特别注意的是,那么在遍历的时候就可能会与减号搞混,就会导致计算错误,所以可以以读入的逗号为分割,分段保存在vector容器中,然后在遍历的过程中,先判断是一个数还是操作符,然后再进行相应的操作。

2024-09-28 17:35:20 153

原创 【数据结构】栈作业——顺序栈判断出栈序列是否合法

现有一个以英文字母组成的字符序列,序列的元素个数为N(3<N<26),该序列通过一个顺序栈可以得到多种出栈序列,设计一个算法判断输入的序列str是否为一个合适的出栈序列。【输入形式】第一行输入序列的元素个数N(3<N<26)第二行按顺序输入该序列的所有元素,输入顺序即为进栈的顺序第三行输入一个不知道是否正确的出栈序列【输出形式】判断第三行输入的是否为可能的出栈序列,如果是则输出true,如果不是则输出false。【样例输入】5a b c d ea b c d e【样例输出】

2024-09-28 11:48:06 281

原创 【数据结构】线性表练习——荷兰国旗问题

本题就是考察的线性表元素的区间划分,需要划分为三个区间,0元素放在第一区间,1元素放在第二区间,2元素放在第三区间。用0~i表示第一区间,k—n-1表示第三区间,i—k为第二区间,初始状态如下图所示:1)当j指向0元素时,i++,扩大第一区间,然后将i、j指向的元素互换,再j++;2)当j指向1元素时,说明它属于中部,保持不动j++;3)当j指向2元素时,说明它属于第三区间,先k–,再将k、j指向的元素互换,这里j不用后移,因为原来k指向的元素还没有遍历到,还需要进行判断。

2024-09-23 14:58:12 259

原创 【数据结构】LeetCode9——回文数

第一种方法是将输入的整数转换成字符串,然后从两头向中间依次进行比较。第二种方法是直接利用数的形式进行比较,负数和除0以外个位是0 的数一定不是回文数,可直接返回false。其他的数,如果是回文数,从后往前和从前往后大小相等,为了提高效率,可只比较前半部分和后半部分,如果前半部分和后半部分的数的大小相等,那就是回文数。

2024-09-21 14:49:09 285

原创 【数据结构】线性表作业(好玩的约瑟夫环-单链表版本)

有M个人,编号分别为1到M,玩约瑟夫环游戏,最初时按编号顺序排成队列;每遍游戏开始时,有一个正整数报数密码N,队列中人依次围坐成一圈,从队首的人开始报数,报到N的人出列,然后再从出列的下一人开始重新报数,报到N的人出列;重复这一过程,直至所有人出列,完成一遍游戏,所有出列的人形成新队列;游戏可能玩很多遍,每遍有新报数密码。求若干遍游戏完成后队列次序。本题要求使用单链表实现,程序要求采用模块化设计,格式规范,有合适注解。【输入描述】

2024-09-19 16:56:56 344

原创 【数据结构】线性表作业——归并排序

有一个含n(n<=200000)个整数的无序序列,采用链表的二路归并排序实现递增排序【输入形式】一行字符串,包含多个整数,每个数之间用空格分开。【输出形式】递增排序的结果,每个数之间用空格分开。【样例输入】【样例输出】【样例说明】测试数据的文件名为in.txt,输出文件名为out.txt。

2024-09-17 14:54:46 1058

原创 【数据结构】线性表作业 HDU1412—集合并集运算

给你两个集合A和B,要求{A}+{B}。注意同一个集合中不会有两个相同的元素。【输入形式】每组输入数据分为三行,第一行有两个数字n,m(0<n,m≤10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B,每个元素为不超出int范围的整数,两个元素之间有一个空格隔开。【输出形式】针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,两个元素之间有一个空格隔开。【样例输入】1 212 3【样例输出】1 2 3。

2024-09-16 15:53:04 204

原创 【数据结构】线性表作业—— 顺序表元素划分

若一个线性表采用顺序表L存储,其中所有元素为整数。设计一个时间空间两方面尽可能高效的算法,将所有元素划分为三部分,三部分以K1和K2为界。划分举例:对于(6,4,10,7,9,2,10,1,3,30),已知K1=5,K2=8,一种划分结果为(3,4,1,2,6,7,20,10,9,30)如果K1<=K2,输出一种划分;否则输出false。【输入形式】第一行输入两个数K1和K2。第二行输入线性表的数据个数N(N<30)。第三行输入线性表的整数数据。【输出形式】

2024-09-15 17:36:57 218

原创 【数据结构】线性表作业 LeetCode143—重排链表

示例1,给定链表为1->2->3->4,重新排列为1->4->2->3。示例2,给定链表为1->2->3->4->5,重新排列为1->5->2->4->3。分析可得,对于长度为n的链表,如果n为奇数,就需要把后面n/2个结点向前插入进行重排,如果n为偶数,需要把后面(n/2-1)个结点向前插入。先让指针p指向首结点,通过循环,让指针q指向倒数第二个结点,然后进行插入的操作,插入后还需要将p向后移动两次,指向下一次要插入的位置。第二步,对中间结点之后的结点进行逆序,构成新的链表,而原链表被截断;

2024-09-15 16:17:50 364

原创 【数据结构】线性表作业(leetcode1——两数之和)

使用两个变量i、j指向当前相加的两数的下标,i从0开始,j从1开始,两两相加进行比较,相加等于目标值时,将i、j保存并退出循环,如果j指向了最后一个元素,就让i加1,j指向i后面的一个元素,进入下一轮的比较,如果j指向中间元素,就j++。这道题还可以通过哈希表来解决,但因为还没有学到,后续再补上。这种方法进行了暴力枚举,对每一种情况进行判断,效率比较低。(该代码中测试数据从"in.txt"文件读入)

2024-09-13 19:12:22 241

原创 【数据结构】POJ3048——最大因数

这种筛选方法比试除法的效率高很多,但是在标记合数的时候,会出现重复标记的情况,例如,通过素数2可以将4、6、8、10、12标记为合数,之后通过素数3又会再次标记6、12,通过5会再次标记10.这样的情况有很多,如果能够防止重复标记,就能够提高效率。整体的思路为:对测试数据进行遍历,判断每一个数的最大素数因数,并用临时变量来保存,进行比较,最后找到有最大素数因数的那个数。该方法的主要思想是:素数的整数倍一定是合数,找到所有的合数,那么剩下的就是素数。(该代码中的测试数据从“in.txt"文件中读取)

2024-09-12 22:22:31 436

原创 【数据结构】刷题记录

对于在末尾插入结点的操作,带尾结点的单循环链表与带头结点的双循环链表都很方便,但是对于删除尾结点的操作,需要修改前驱结点的后继结点,双循环链表可以很快的实现,但是C选项不好实现,要找到尾结点的前驱结点还要从头开始找。综上,D更节省时间。

2024-09-05 15:22:44 144

空空如也

空空如也

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

TA关注的人

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