
PTA数据结构与算法题目集
Z. Jia
这个作者很懒,什么都没留下…
展开
-
PTA数据结构与算法题目集7-6 列出连通集(c语言实现)
原题链接一个简单的图的遍历的题,直接上代码。#include <stdio.h>int edge[10][10]={0};int x[11]={0};int dfs(int n,int v){ int i; x[v]=1; printf("%d ",v); for(i=0;i<n;i++){ if(x[i]==0 && edge[v][i]==1){ dfs(n,i); } }}int bfs(int n,int v){ int t[原创 2020-05-25 23:16:06 · 551 阅读 · 0 评论 -
数据结构与算法题目集7-38 寻找大富翁(c语言实现)
原题链接一道简单的排序题,偷个懒直接用库函数里的qsort函数,需要注意的是如果m>n时,输出n个数#include <stdio.h>#include <stdlib.h>int cmp(const void *a,const void *b){ return *(int *)a < *(int *)b;}int x[1000000]={0};...原创 2020-05-07 22:32:36 · 645 阅读 · 2 评论 -
数据结构与算法题目集7-22 堆栈模拟队列(c语言实现)
原题链接这道题还是有点有趣的,我们首先需要了解堆栈是后进先出,队列是先进先出这一特点,然后根据这一特点来用堆栈模拟队列入队列:s1未满,s2空:元素入栈s1s1满,s2非空:输出错误:已满s1满,s2空:将s1的元素倒入s2,将新元素入栈s1s1未满,且非上面的情况:元素入栈s1if(isfull(s1)!=1 && isempty(s2)){ push(&am...原创 2020-05-06 09:36:42 · 842 阅读 · 0 评论 -
数据结构与算法题目集7-20 表达式转换(c语言实现)
原题链接这道题需要考虑负数和小数的情况,是否是数组我们用isnumber这个函数来判断。因为小数点不可能单独出现,所以我们认为小数点也是数字的一部分。我们先用一个字符串存储这个表达式,如果当前的字符是数字的一部分,直接输出。如果当前字符是正负号,那么进行如下判断。如果当前字符是第一个字符,那么肯定是数字的正负号;否则如果当前字符的前一个字符既不是 ‘)’ 也不是数字,那么它也是数字的正负号...原创 2020-05-05 22:05:58 · 619 阅读 · 0 评论 -
数据结构与算法题目集7-21 求前缀表达式的值(c语言实现)
原题链接首先我们将所有数据压到一个栈里,包括运算符号和数字。在这个题里我重新定义了一种变量类型。当no=1时,这个变量存储doule类型的数字,否则存储运算符。从栈顶开始,如果是数字,压到一个double类型的栈里,如果是运算符,从double栈里取两个数字进行计算。若令a为double栈顶数字,b为栈顶的下一个数字,那么令c=a运算符b,并将c压到double栈。大致思想如上所示,在代...原创 2020-05-05 20:34:56 · 2876 阅读 · 1 评论 -
数据结构与算法题目集7-18 银行业务队列简单模拟(c语言实现)
原题链接很基本的一道队列的应用,因为数据量较少,其实可以直接用顺序队列做,下面我们分别给出链队列和顺序队列两种解法:链队列:#include <stdio.h>#include <stdlib.h>typedef struct node{ struct node* next; int data;}lqnode;typedef struct{ struct...原创 2020-04-29 10:47:24 · 3351 阅读 · 0 评论 -
数据结构与算法题目集7-39 魔法优惠券(c语言实现)
原题链接这道题最主要的问题其实是排序,再接下来要搞清楚如何求得最大收益。最大收益=最大正的优惠卷x最大正的商品+最大负的优惠卷x最大负的商品这里强烈推荐大家使用qsort函数!#include <stdio.h>#include <stdlib.h>int cmp(const void *a,const void *b){ int x=*(int *)a,y=...原创 2020-04-28 15:17:09 · 1233 阅读 · 0 评论 -
数据结构与算法题目集7-19 求链式线性表的倒数第K项(c语言实现)
原题链接这道题的两种解法:设置一个前置指针,指向当前结点的前k个结点采用头插法,从前向后数k个(效率更高,更简单)下面依次给出两种解法的代码:第一种解法:#include <stdio.h>#include <stdlib.h>typedef struct node{ struct node *next; int data;}lnode;void...原创 2020-04-27 10:43:12 · 508 阅读 · 0 评论 -
数据结构与算法题目集7-16 一元多项式求导(c语言实现)
原题链接这道题因为没有给多项式有几项,所以我们用下面这个循环语句控制程序的执行。while(scanf("%d %d",&a,&b)!=EOF)每一项输入之后按照系数等于原系数*指数,指数等于原指数-1来输出。注意零多项式要输出 “0 0”#include <stdio.h>int main(){ int a,b,t=1; while(scanf("%...原创 2020-04-27 09:41:13 · 759 阅读 · 0 评论 -
数据结构与算法题目集7-1 最大子列和问题(c语言实现)
原题链接一个子序列如果小于0,那么它不管怎么与后面相加,目前这个子序列都会减少后续子序列的和,如果掌握这一点,下面的代码不难理解。这道题最终的就是争取时间复杂度为O(n),否则可能会超时,所以我们选择边输入边相加的方式来完成到这题。#include <stdio.h>int main(){ int k,i,j,sum=0,now=0,a; scanf("%d",&k...原创 2020-04-22 09:31:15 · 290 阅读 · 0 评论 -
数据结构与算法题目集7-53 两个有序序列的中位数(c语言实现)
原题链接这道题最重要的其实是中位数的选取,其中最快的方法应该是同时比较两个链表,比到那个需要输出的那个中位数直接输出。#include <stdio.h>#include <stdlib.h>typedef struct node{ struct node* next; int data;}lnode;void init(lnode **l){ (*l)=...原创 2020-04-22 08:58:08 · 772 阅读 · 0 评论 -
数据结构与算法题目集7-52 两个有序链表序列的交集(c语言实现)
原题链接这道题的要点分别有:插入的时候函数返回最后一个结点的指针,下次插入直接就不用从头数到尾了,对大量数据插入有很大的帮助。合并时,两个链表插入较小的那一个,如果有一个链表结束了,那么退出循环,将没有结束的链表直接插到新链表的最后面。这个操作对大数据量也很有帮助。因为这道题是有序的链表且要不减输出,所以我们在给出交集的时侯可以做如下判断如果L1链当前的结点小于L2链的当前结点,L...原创 2020-04-21 23:27:33 · 521 阅读 · 0 评论 -
数据结构与算法题目集7-51 两个有序链表序列的合并(c语言实现)
原题链接这里用到了两个小技巧插入的时候函数返回最后一个结点的指针,下次插入直接就不用从头数到尾了,对大量数据插入有很大的帮助。合并时,两个链表插入较小的那一个,如果有一个链表结束了,那么退出循环,将没有结束的链表直接插到新链表的最后面。这个操作对大数据量也很有帮助。#include <stdio.h>#include <stdlib.h>typedef st...原创 2020-04-21 23:09:31 · 456 阅读 · 0 评论 -
PTA数据结构与算法题目集7-37 模拟EXCEL排序(c语言实现)
原题链接怎么说呢,这道题我偷懒了。我必须要承认,我偷懒了。但是还是必须要说stdlib.h库中的qsort函数是真的牛逼。建议大家先百度这个函数再来看我的代码,这样会很好懂。#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{ int xh; char ...原创 2020-04-13 16:38:35 · 1068 阅读 · 0 评论 -
PTA数据结构与算法题目集(中文)7-23 还原二叉树(c语言实现)
原题链接题目处理的具体思想参照下方链接已知树的中序遍历与前(后)序遍历求二叉树问题附上源码#include <stdio.h>#include <stdlib.h>typedef struct node* bintree;struct node{ bintree l; bintree r; char data;};bintree createbin...原创 2020-04-11 13:00:48 · 550 阅读 · 0 评论 -
已知树的中序遍历与前(后)序遍历求二叉树问题
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。目前我们给出了三道pta中的习题,通过这三道题我们回顾...原创 2020-04-11 12:56:51 · 1770 阅读 · 0 评论 -
PTA数据结构与算法题目集7-32 哥尼斯堡的“七桥问题”(c语言实现)
原题链接在图论里面这是一个相当经典的问题了,如果满足以下两个条件则存在无向图的欧拉回路,否则不存在。每个点的度为偶数图连通这里就涉及用并查集来判断一个图是否连通,并查集的思想参照下方链接超有爱的并查集~这位大佬写的相当好。本题的具体代码如下,对应部分有注释:#include <stdio.h>int pre[1005],num[1005]={0};int fin...原创 2020-04-07 22:56:42 · 1247 阅读 · 1 评论