浙大数据结构应用实例
文章平均质量分 71
分享一些例题,希望在写出代码的同时也可以讲清思路
时墨啊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
8、Pop Sequence(简单方法)
这道题一次就全AC,太爽辣(编译错误可能是因为不能提前声名函数,把后面的函数全放前面就可以)题目题目意思很好理解,大体就是判断一个先入后出的堆栈,能不能得到以下的输出结果。第一行有三个数据:栈的大小 判断数据的数量 判断几次之后每行就输入你要判断的输出的数据。例如1,2,3顺序入栈,你能控制输入输出的时间,得到123,321,213等数据,得不到312。代码分析简单分为3个部分,输入,判断,输出。我们每输入完一次数据,就进行一次判断,得出结果并输出。主函数#include<原创 2021-04-17 11:02:36 · 730 阅读 · 0 评论 -
1、最大子列和问题(包含4种算法)
1、最大子列和问题题目在一个列表中,有许许多多的子列,我们的目的,就是求最大子列和是多少。例如{-2,11,-4,13,-5,-2},最大子列是{11,-4,13},和为20。主函数#include<stdio.h>#define N 100000int findMax(int num[],int n);int main(){ int i,n,maxSum; printf("输入该列表的元素个数"); scanf("%d", &n); int num[N];原创 2021-04-04 13:23:47 · 2502 阅读 · 0 评论 -
2、二分查找(一般方法和递归方法)
二分查找 二分查找法是一种查找数据在数组中位置的方法。通常,使用循环遍历就可以找到数组中每一个需要找到的元素。但当数据内容很多时,遍历的效率就显得十分低下。因此引入二分查找的方法,大大缩小了查找的耗时。 在一个数组从小到大排序好的前提下,二分查找可以这么理解。 存在一个序列a[N],一个待查找的数num,先找到这个序列的中点a[mid],与num比较,若相等则返回下标mid;否则,a[mid] > num,说明待查找的数在左边,便舍弃右边,对左边继续二分查找。反之,a[mid] <原创 2021-04-08 08:44:43 · 664 阅读 · 0 评论 -
3、数列求和(加强版是什么鬼)
今天看书才发现return 0有多么重要,之前一直认为可有可无,基本没写,之后一定会改正这个烂习惯。题目 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+A**A+AAA+⋯+A**A⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。分析 这时铁有人跳出来,这么简单的题都好意思发出来,这不直接用循环就能搞定的问题,散了散了。 阿哲 我一开始也是这么想的,几次想跳过这道题,但想来想去放在算法书里一定有它的道理。于是我用最基础的方法原创 2021-04-09 17:45:13 · 279 阅读 · 0 评论 -
4、输出全排列(递归方法)
本来这篇早就该写了,但一直没有时间,鸽到了现在,略微有点愧疚。题目 输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,⋯,a**n排在序列b1,b2,⋯,b**n之前,如果存在k使得a1=b1,⋯,a**k=b**k 并且 a**k+1<b**k+1。 讲真这题目确实抽象,我们看个例子 让我想起了初中的数学题。。。分析 在我看来,递归确实难以理解,但这种题,每一位都循环着走是一种解法,但循环次数是随着输入的值动态变化的。以我目前的知识原创 2021-04-13 21:10:41 · 10931 阅读 · 1 评论 -
5、最长连续递增子序列(线性表的实现)
这道题真让我感受到了啥叫一个bug改一天。 偏偏就100000个数的时候测试没过,真的难顶。测试了好多数据都是正确的,最后输入1 2 3 1 2 3 1 2 3找到了问题,最后真是一行代码位置的问题,麻了。题目给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。分析思路是很明确的,我们遍历一次线性表,找到递增的所有子序列,用一个下标存最长的那一串,之后输出就可以了。大体思路有了,原创 2021-04-13 21:40:44 · 811 阅读 · 0 评论 -
6、一元多项式的乘法与加法运算(线性表实现方法)
前言 真的醉了,写了一个下午。一开始感觉题目离不了数据的调用,因此使用了线性表的方法,写的时候那叫一个折磨。但我认为我提供了一个不同于链表的方法,还是打算分享给大家。我是伞兵题目设计函数分别求两个一元多项式的乘积与和。 题目真的很抽象,我们这样理解。第一行 4 3x4-5x2+6x1-2x0第二行 3 5x20-7x4+3x1把两个多项式相乘,相加,输出类似的结果。如果相乘或相加后是0,输出0 0。代码分析主函数#include<stdio.h>#i原创 2021-04-16 10:29:03 · 997 阅读 · 0 评论 -
7、Reversing Linked List(包含题目解析)
第一次做英文题,讲真这翻译,这输入例子给的,真tm尴尬。。。 啥都没讲清楚,就让你做。我在网上找答案然后不断改动输入数据,才大概摸清了题目的意思。 关于方法,我的有点强解的味道,很不巧妙。后来去看了别人AC的方法,确实妙,完美的用上了“地址”这一信息,我也不想在做一遍了,我就把这种最好理解的方法分享给大家。题目看不懂就对了。第一行输入了3个东西第一个数据的地址 数据总个数 反转的数据个数反转比较容易理解。比如有1-2-3-4-5-6,以3反转,得到3-2-1-6-5-4。以4反原创 2021-04-16 16:39:03 · 1086 阅读 · 0 评论
分享