自定义博客皮肤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)
  • 收藏
  • 关注

原创 PTA 最大子列和问题 (20分)+不定长数组定义

给定K个整数组成的序列{ N​1​​, N​2​​, …, N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, …, N​j​​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:数据1:与样例等价,测试基本正确性;

2020-08-13 19:06:07 154

原创 PTA单链表逆转

单链表逆转List Reverse( List L ){ //L1->Data=1,L2->Data=ALL; List L2,L1; L2=L; L=NULL; while(L2){ L1=L2; L2=L2->Next;//L2指向下一个元素 L1->Next=L;//L后移一个元素 L=L1;//下一个元素指向开头 } return L; }

2020-08-09 19:32:05 504

原创 PTA 求二叉树高度 (20分)

思路:二叉树的深度和它的左、右子树深度之间的关系。从二叉树深度的定义可知,二叉树的深度应为其左、右子树深度的最大值加1。由此,需先分别求得左、右子树的深度,求得左、右子树深度的最大值,然后加 1 即为二叉树的高度;可以递归的调用二叉树深度函数。int GetHeight(BinTree BT){ int high=0;//节点总数 int depthleft,depthright; if(BT==NULL){ return 0; }else{ ...

2020-08-05 23:07:59 2884 1

原创 PTA 二叉树的遍历 (25分)

本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;str

2020-08-05 19:50:28 2264

原创 PTA 二分查找 (20分)

按照题目要求我们采用非递归的方式进行:设置low、mid、high三个指针;low小于等于high作为while循环的结束条件(注意定要有等于号,我一开始在这个地方犯了错误)。例如数组1234中找到4,如下图:step1:step2:那么到此处,如果low=high我们不进一步做判断,会return Notfound,与实际结果不吻合。Position BinarySearch( List L, ElementType X ){ int low,mid,high; low=1;hi

2020-08-04 22:34:34 1704

原创 PTA 双端队列 (25分)

双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作:Push(X,D):将元素X插入到双端队列D的头;Pop(D):删除双端队列D的头元素,并返回;Inject(X,D):将元素X插入到双端队列D的尾部;Eject(D):删除双端队列D的尾部元素,并返回。基本分析:1.双端队列必定是个循环队列,判断队空、队满、front和rear加减的时候,注意

2020-08-02 12:02:00 921

原创 各类排序算法及思想

这篇博文就是自己的一些学习记录,部分数据fromhttp://data.biancheng.net/view/65.html第一部分 插入排序1.直接排序基本思想:把数组分为两个部分,前一部分是有序序列;后一部分是无序序列;依次将无序序列中的第一个元素插入到有序序列当中去(从1到n-1),完成排序。void directsort(list &L){ int i,j,min; ...

2020-03-17 15:51:02 1076

原创 判定给定的树是不是排序二叉树

根据排序二叉树的定义我们知道,左子树节点值<根节点值<右子树节点值,所以判定给定的树是不是排序二叉树,我们只需要通过中序遍历,判断序列是否递增即可。 算法思想:1.判断左子树是不是排序二叉树。2.若是比较前驱节点于当前节点的值,若大于则返回0.若左子树不是排序二叉树同样返回0。3.判断右子树是不是排序二叉树,若是返回1则整个树都是排序二叉树,若不是返回0。#include &...

2020-03-15 14:41:42 230

原创 关于指针数组和二维数组的区别&&抽签小程序

之前人家写的抽签小程序都是要设置随机变量,第一先设置srand()种子,第二令number=rand();我觉得既然是伪随机,不如让我通过键盘控制好了;int main(){ char *pre[]={"a","b","c","d","e","f"}; while(!kbhit()){ //该函数主要检测是否按下一键,若按下返回0,没有按返回1值。 printf("%s...

2020-03-12 11:58:09 246

原创 关于C语言指针的理解及应用(相邻指针之差为1)

@关于C语言指针的理解及应用(相邻指针之差为1)c语言中,如果定义指针变量,无论所指向的结构体的大小为多少,相邻指针变量之间的差为1;例如:定义结构体typedef struct { bitree data[50]; int top;}stack;我们设置指针变量m和q,m和q相邻,则m和q的差为1; stack *m; stack *q; q=m+1; printf("o...

2020-03-11 17:04:20 323

原创 广度优先搜索

广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶点时,依次遍历其所有的邻接点,然后再从这些邻接点出发,同样依次访问它们的邻接点。按照此过程,直到图中所有被访问过的顶点的邻接点都被访问到。最后还需要做的操作就是查看图中是否存在尚未被访问的顶点,若有,则以该顶点为起始点,重复上述遍历的过程。还拿图 1 中的无向图为例,假设 V1 作为起始点,遍历其所有的邻接点 V2 和 V3 ...

2020-03-08 11:19:57 212

原创 非递归后序遍历二叉树

本文主要分为两个部分:包括二叉树的构造和非递归后序遍历,都比较有参考价值,这里将思路整理出来。第一个部分主要是通过先序和中序构造二叉树,参考文章为https://blog.csdn.net/qq_35733751/article/details/80970664我觉得他的构造方式比较通用而且简洁,其实还有通过递归构造的方式我觉得比较麻烦,就没有采用。下为原理图:主要思想:1.找到pre数组中...

2020-03-07 09:35:27 1423

原创 算数表达式转换:中缀转后缀,利用栈来实现

算数表达式转换:中缀转后缀,利用栈来实现#include <stdio.h>#include <stdlib.h>#define max 50int push(char *a,int top,char elem);int pop(char *a,int top);int main(int argc, char *argv[]) {int top=0;char...

2019-12-04 14:30:39 225

空空如也

空空如也

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

TA关注的人

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