自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

二木成林

个人博客

  • 博客(88)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 考研数据结构之栈(2.5)——练习题之编写一个算法,检查一个程序中的花括号、方括号和圆括号是否配对(C表示)

题目编写一个算法,检查一个程序中的花括号、方括号和圆括号是否配对,若全部配对,则返回1,否则返回0.对于程序中出现的对单引号或双引号内的字符不进行括号配对检查。39为单引号的ASCII值,34为双引号的ASCII值,单引号和双引号如果出现则必成对出现。假设stack是已经定义的顺序栈结构体。可以直接调用的元素进栈/出栈、取栈顶元素、判断栈空的函数定义如下:voidpush(stack&S,charch); voidpop(stack&S,char&amp...

2020-05-31 22:12:11 3410 5

原创 考研数据结构之栈(2.5)——练习题之求解二次方根A的迭代函数,写出相应的递归算法和非递归算法(C表示)

题目分析实际上就是递归的使用。代码核心代码:/* 递归算法 */float sqrt(float A,float p,float e) { if(abs(p*p-A)<e) { return p; } else if(abs(p*p-A)>=e) { sqrt(A,(p+A/p)/2,e); }}/* 非递归算法 */float sqrt_2(float A,float p,float e) { while(abs(p*p-A)>=e)

2020-05-31 21:25:33 454 1

原创 考研数据结构之栈(2.5)——练习题之设计一个递归算法求n个不同字符的所有全排列(C表示)

题目设计一个递归算法求n个不同字符的所有全排列。分析参见:全排列(递归算法)。代码核心代码:/* 所有字符的全排列 *//* str[]指的是是字符数组;k指的是n-1;n指的是str数组的长度 */void perm(char str[],int k,int n) { int i,j; char temp; if(k==0) {// 处理只有一个数的情况 for(j=0; j<n; j++) { printf("%c",str[j]); } p

2020-05-31 21:11:00 1195

原创 考研数据结构之队列(3.3)——练习题之设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空来设计队列的结构和相关基本运算算法(C表示)

题目设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空,约定当tag为0时队空,当tag为1时队不空,这样就可以用front==rear作为队满的条件要求,设计队列的结构和相关基本运算算法(队列元素是int型)。分析结构体定义:/* 顺序队类型定义 */typedef struct { int data[maxSize]; int front;// 队首指针 int rear;// 队尾指针 int tag;// 表示队列是空

2020-05-31 20:11:14 7095 4

原创 考研数据结构之队列(3.3)——练习题之如果运行在循环队列的两端都可以进行插入和删除操作,写出从队尾删除和从队头插入的算法(C表示)

题目如果允许在循环队列的两端都可以进行插入和删除操作,写出从队尾删除和从队头插入的算法。分析用一维数组data[0,....maxSize1]实现循环队列,其中maxSize是队列长度。设置队头指针front和队尾指针rear,约定front指向队头元素的前位置,rear指向队尾元素。定义满足front-rear时为队空。从队尾删除元素,则rear向着下标减小的方向行走:从队头插入元素,front同样向着下标减小的方向行走。因此,当满足rear==(front-1+maxSize...

2020-05-31 18:36:21 7898

原创 考研数据结构之队列(3.3)——练习题之假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针,写出相应的入队列和出队列的算法(C表示)

题目假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针,写出相应的入队列和出队列的算法。分析本题是链队基本操作的扩展,知道尾指针后,要实现元素入队,则直接用链表的插入操作即可。要实现出队操作,则需要根据尾指针找出头结点和开始结点,然后进行删除。要注意的是,尾指针应始终指向终端结点,并且当删除结点后队列为空时,必须特殊处理。代码核心代码:/* 入队列 *//* *&rear指的是尾指针;x指的是要插入的元素值 */void enQueue(C

2020-05-31 17:28:38 10426 4

原创 考研数据结构之队列(3.3)——练习题之利用两个栈s1和s2来模拟一个队列,然后利用栈的运算来实现队列的enQueue、deQueue及isQueueEmpty运算(C表示)

题目请利用两个栈sI和s2来模拟-一个队列,假设栈中元素为int型,栈中元素最多为maxSize。己知栈的3个运算定义如下。push(ST,x):元素x入ST栈。 pop(ST,&x):ST栈顶元素出栈,赋给变量X。 isEmpty(ST):判断ST栈是否为空。如何利用栈的运算来实现该队列的3个运算:enQueue(元素入队列)、deQueue(元素出队列)、isQueueEmpty(判断队列是否为空,空返回1,不空返回0)。分析栈的特点是后进先出,队列的特点是先进先...

2020-05-31 16:27:31 3452 7

原创 考研数据结构之栈(2.5)——练习题之设计一个共享栈s0和s1以及有关入栈和出栈操作的算法(C表示)

题目为了充分利用空间,顺序栈s0、s1共享一个存储区elem[0, ... , maxSize-1]。试着设计一个共享栈s0、s1以及有关入栈和出栈操作的算法,假设栈中元素是int型。分析算法思想:1)顺序栈栈底固定不变,因此将栈底设在存储区的两端,即s0栈底设在0处,sI栈底设在maxSize-1处,栈顶在0~maxSize-1的范围内变动。当两栈栈顶相遇时为栈满,这样可以尽可能地利用空间。2)sO的栈项为top0,s0入栈操作为:top0先自增1,然后存入元素:出栈操作为:先取...

2020-05-31 15:54:55 2180 2

原创 考研数据结构之队列(3.2)——链队的操作(C表示)

概述链队的要素:(1)两个状态队空状态:lqu->rear==NULL或者lqu->front==NULL 队满状态:假设内存无限大的情况就不存在队满的情况(2)两个操作元素进队操作(假设p指向进队元素):lqu->rear->next=p;lqu->rear=p; 元素出队操作(假设x存储出队元素):p=lqu->front;lqu->front=p->next;x=p->data;free(p);链表操作示意图:代

2020-05-31 14:44:03 1027 2

原创 考研数据结构之队列(3.1)——顺序队的操作(C表示)

概述顺序队使用循环队列来避免“假溢出”问题。循环队列的四个要素:(1)两个状态队空状态:qu.rear==qu.front 队满状态:(qu.rear+1)%maxSize==qu.front(2)两个操作元素x进队操作(移动队尾指针):qu.rear=(qu.rear+1)%maxSize;qu.data[qu.rear]=x; 元素x出队操作(移动队首指针):qu.front=(qu.front+1)%maxSize;x=qu.data[qu.front];代码#i

2020-05-31 12:26:12 632

原创 考研数据结构之线性表(1.7)——练习题之设计一个实现下述要求的locate运的函数(C表示)

题目试设计一个实现下述要求的locate运算的函数。设有一个带头结点的双向链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次locate(x)操作时,令元素值为x的结点的访问频度freq加1,并将该结点前移,链接到与它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。分析算法用到了四个双向循环链表的主要操..

2020-05-30 23:13:36 1173

原创 考研数据结构之线性表(1.7)——练习题之已知L为不带表头结点的单链表的表头指针(L非空),链表中存储的都是整型数据,使用递归算法实现求链表中的最大整数、链表结点个数及所有整数的平均值(C表示)

题目已知L为不带表头结点的单链表的表头指针(L非空),链表中存储的都是整型数据,写出实现下列运算的递归算法。(1)求链表中的最大整数(2)求链表中的结点个数(3)求所有整数的平均值分析使用递归的方法。代码核心代码:/* 求链表中的最大整数 */int getMax(LNode *L) { if(L->next==NULL) { // 链表中仅一个结点 return L->data; // 其值即为所求 } int temp=getMax(L-&g

2020-05-30 22:46:57 4417 2

原创 考研数据结构之线性表(1.7)——练习题之已知在一维数组中依次存放着两个顺序表,编写程序将数组中两个顺序表位置互换,即将b1放在a1的前面(C表示)

题目已知在一维数组A[0,..m+n-1]中依次存放着两个顺序表(a1,a2,.,am)和(b,b2, ....b.).试编写程序,将数组中两个顺序表的位置互换,即将(b1,b2, ... , bn)放在(a1a2, ... ,am)的前面。分析题目分析:解决思路:代码核心代码:/* 位置互换元素 *//* nums[]指的是要进行互换元素的数组;i指的是起始下标;j指的是结束下标 */ void reverse(int nums[],int i,...

2020-05-30 22:33:26 1104 1

原创 考研数据结构之线性表(1.7)——练习题之编写一个算法将m各有序(从小到大)顺序表合并成一个有序顺序表,假设所有顺序表存储在一个m行maxSize列的二维数组中(C表示)

题目编写一个算法,将m(m≥2)个有序(从小到大)顺序表合并成个有序顺序表,假设所有顺序表存储在一个m行maxSie(maxSize足够大)列的二维数组lists[m][maxSize]中,要求把1~m-1行所在的顺序表合并在0行所在的顺序表中,各表的长度存储在数组lens[m]中,合并过程中不另设新的顺序表存储空间。分析可以将m各顺序表的合并先处理为两个顺序表的合并,参考:将两个有序(非递减有序)顺序表合并成为一个顺序表,合并后的结果放到A[]中不另设新的顺序表存储空间,将lists中的...

2020-05-30 22:08:32 988

原创 考研数据结构之线性表(1.7)——练习题之已知一个带表头结点的单链表中含有3类字符(数字字符、字母字符和其他字符),编写一个函数构造三个新链表使每个链表只包含同类字符(C表示)

题目已知一个带表头结点的单链表中含有3类字符(数字字符、字母字符和其他字符)。试编写个函数,构造3个新的单链表,使每个单链表中只包含同类字符。要求使用原表的空间,表头结点可以另辟空间。分析遍历链表,判断各个结点是属于什么字符,然后分别添加到对应的链表中。代码核心代码:/* 分离各种字符 */ void separate(LNode *&LA,LNode *&LB,LNode *&LC) { // 原来的单链表是LA,新的三个单链表是LA(数字)、LB..

2020-05-30 21:54:58 2430

原创 考研数据结构之线性表(1.7)——练习题之通过遍历一趟链表将链表中所有结点这种所有结点的链方向逆转(C表示)

题目设计一个有表头指针为h的单链表,设计一个算法,通过遍历一趟链表,将链表中所有结点的链方向逆转。分析就是相当于链表的头插法。代码核心代码:/* 逆置单链表 *//* *L指的是要逆置的单链表 */void reverList(LNode *L) { LNode *temp=L->next;// 开始结点(即第一个结点) LNode *q;// 用来记录后继结点 L->next=NULL ; while(temp!=NULL) { q=temp

2020-05-30 21:37:57 3815

原创 考研数据结构之线性表(1.7)——练习题之A和B都是顺序表,编写一个比较A和B的算法(C表示)

题目分析先找出A和B中前面对应位置相同的元素,用指针i和j分别指示A和B中不同的元素,根据指针i和j提供的元素信息即可得到A和B的比较结果。代码核心代码:/* 比较A和B的大小 */int compare(int A[],int An,int B[],int Bn) { int i=0,j=0; while(i<An&&j<Bn) {// 处理A和B顺序表中的公共部分 if(A[i]==B[j]) { i++; j++; } e

2020-05-30 21:36:07 1761

原创 考研数据结构之线性表(1.7)——练习题之编写一个将A和B中所有元素组成一个新的从小到大的有序顺序表C的算法,要求所有重复的元素只保留一个(C表示)

题目设A和B是两个顺序表,其元素按非递减的顺序排列。编写一个将A和B中所有元素结点组成一个新的从小到大的有序顺序表C的算法,要求所有重复元素只保留一个。分析还是在归并算法上进行修改。代码核心代码:/* 归并A和B表 *//* A[]指的是A顺序表;An指的是A的长度;B[]指的是B表,Bn指的是B的长度;C[]指的是要合并后的表;&Cn指的是C数组的长度,要进行修改 */void merge(int A[],int An,int B[],int Bn,int C[],i

2020-05-30 21:06:08 2181

原创 考研数据结构之线性表(1.7)——练习题之A和B两个顺序表中相同元素组成一个新的从大到小的有序顺序表C的算法(C表示)

题目设A和B是两个顺序表,其元素按递增的顺序排列。编写一个将A和B中相同元素组成一个新的从大到小的有序顺序表C的算法。分析在归并算法的基础上稍加改动,只需要将当前扫描到的相等元素归入C表即可。代码核心代码:void merge(int A[],int An,int B[],int Bn,int C[],int &Cn) { int i=An-1; int j=Bn-1; int q=0; while(i>=0&&j>=0) { if(

2020-05-30 20:50:21 1489

原创 考研数据结构之线性表(1.7)——练习题之将两个有序(非递减有序)顺序表合并成为一个顺序表,合并后的结果放到A[]中不另设新的顺序表存储空间(C表示)

题目编写一个算法实现两个有序(非递减有序)顺序表合并成为一个顺序表,假设第一个顺序表存储在A[]中,第二个顺序表存储在B[]中,A[]和B[]的长度为maxSize,maxSize足够大,合并后的结果放在A[]中,不另设新的顺序表存储空间。分析实现顺序表A和B的合并过程:从A和B的最好一个元素逐个向前进行比较,将较大的元素先定位在A[]中,直到合并过程结束。代码核心代码:void merge(int A[],int &An,int B[],int Bn){ for(int

2020-05-30 20:43:31 2697 1

原创 LeetCode之1346. 检查整数及其两倍数是否存在

概要题目来源链接:https://leetcode-cn.com/problems/check-if-n-and-its-double-exist/难度:简单类型:数组题目给你一个整数数组arr,请你检查是否存在两个整数N 和 M,满足N是M的两倍(即,N = 2 * M)。更正式地,检查是否存在两个下标i 和 j 满足:i != j 0 <= i, j < arr.length arr[i] == 2 * arr[j]示例示例 1:输入...

2020-05-28 20:56:31 448

原创 LeetCode之1417. 重新格式化字符串

概要题目来源链接:https://leetcode-cn.com/problems/reformat-the-string/难度:简单类型:字符串题目给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母。请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同。也就是说,字母后面应该跟着数字,而数字后面应该跟着字母。请你返回 重新格式化后 的字符串;如果无法按要求重新格式化,则返回一个 空字符串 。示例示例 1:输入:s = "a0b1c2"输出:"

2020-05-28 16:22:48 314

原创 LeetCode之287. 寻找重复数

概要题目来源链接:https://leetcode-cn.com/problems/find-the-duplicate-number/难度:中等类型:每日一题题目给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假...

2020-05-28 12:13:24 274

原创 LeetCode之136. 只出现一次的数字

概要题目来源链接:https://leetcode-cn.com/problems/single-number/难度:简单类型:数组题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析第一种思路是暴力破解,即统计每个元素出现的次

2020-05-28 11:57:08 190

原创 LeetCode之69. x 的平方根

概要题目来源链接:https://leetcode-cn.com/problems/sqrtx/难度:简单类型:每日一题题目实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(Le...

2020-05-28 11:14:19 331

原创 考研数据结构之排序(8.4)——交换类排序之冒泡排序(C表示)

算法思想起泡排序又称冒泡排序。它是通过一系列的“交换”动作完成的。首先第-个关键字和第二个关键字比较,如果第一个大,则二者交换,否则不交换:然后第二个关键字和第三个关键字比较,如果第二个大,则二者交换,否则不交换....一直按这种方式进行下去,最终最大的那个关键字被交换到了最后,-趟起泡排序完成。经过多趟这样的排序,最终使整个序列有序。这个过程中,大的关键字像石头-样“沉底”,小的关键字像气泡一样逐渐向上“浮动”,起泡排序的名字由此而来。执行流程参考书上的执行流程如下:详细展示下每趟的执

2020-05-27 21:34:09 311

原创 考研数据结构之排序(8.3)——插入类排序之希尔排序(C表示)

算法思想希尔排序又叫作缩小增量排序,其本质还是插入排序,只不过是将待排序列按某种规则分成几个子序列,分别对这几个子序列进行直接插入排序。这个规则的体现就是增量的选取,如果增量为1,就是直接插入排序。例如,先以增量5来分割序列,即将下标为0、5、10、15...的关键字分成一组,将下标为1、6、11、16...的关键字分成另一组等,然后分别对这些组进行直接插入排序,这就是一趟希尔排序。将上面排好序的整个序列,再以增量2分割,即将下标为0、2、4、6、8...的关键字分成一组,将下标为1、3、5、7、...

2020-05-27 19:59:00 330

原创 考研数据结构之排序(8.2)——插入类排序之折半插入排序(C表示)

算法思想折半插入排序是基本思想和直接插入排序类似,区别是查找插入位置的方法不同,折半插入排序是采用折半查找法来查找插入位置的。折半查找法的一个基本条件是序列已经有序,而从直接插入排序的流程中可以看出,每次都是在一个已经有序的序列中插入一个新的关键字,因此可以用折半查找法在这个有序序列中查找插入位置。执行流程代码/* 折半插入排序 *//* nums[]指的是有序数组;low指的是数组下标0;high指的是数组下标n-1(n指的是数组长度);target指的是要插入的目标元素 */

2020-05-27 16:11:59 286

原创 考研数据结构之排序(8.1)——插入类排序之直接插入排序(C表示)

算法思想直接插入排序的算法思想:每趟将一个待排序的关键字按照其值的大小插入到已经排好的部分有序序列的适当位置,直到所有待排关键字都被插入到有序序列中为止。执行过程下面画图具体说明下执行过程是实现一步步实现的:代码/* 快速插入排序 *//* R[]指的是要进行排序的原数组;n指的是数组中元素个数 */ void sort(int R[],int n) { for(int i=1;i<n;i++){// 从下标1开始,循环遍历数组中的每个元素 // 为

2020-05-27 14:39:37 350

原创 考研数据结构之数组(5.6)——练习题之假设稀疏矩阵A和B都采用三元组表示,编写一个函数计算C=AxB,要求C也用三元组表示(C表示)

题目假设稀疏矩阵A和B(分别为mxn和nxk矩阵)采用三元组表示,编写一个函数,计算C=AxB,要求C也用三元组表示的稀疏矩阵。分析第一种思路是先将A和B由三元组转换成稀疏矩阵形式,然后进行矩阵相乘,再将相乘后的C用三元组表示。第二种思路是本题在原理上与普通的矩阵相乘算法没有太大区别,其核心问题在于,根据给出的行号和列号找出原矩阵中的对应元素值,因此构造了一个函数getvalue0,当在三元组表示中找到时返回其元素值,找不到说明原该位置处的元素值为0,因此返回0.然后利用该函数计算出C的行号

2020-05-26 20:28:30 2806

原创 考研数据结构之数组(5.6)——练习题之假设稀疏矩阵A和B都采用三元组表示,编写一个函数计算C=A+B,要求C也用三元组表示(C表示)

题目假设稀疏矩阵A和B(两矩阵的行列数相等)都采用三元组表示,编写一个函数,计算C=A+B,要求C也采用三元组表示,所有矩阵都为int型。分析第一种思路是先将A和B由三元组表示转换成稀疏矩阵的表示形式,然后计算A+B=C,再将C由稀疏矩阵表示成三元组。第二种思路是,两矩阵相加规则为对应位置上的元素相加,对于三元组存储结构下的矩阵A和B假如当前需要将位置(i,j)上的元素a[i,j]和b[i,j]相加,需要考虑三种不同的情况: a[i,j]等于0, b[i,j]不等于0;a[i,j]不等于..

2020-05-26 19:53:51 6791

原创 考研数据结构之数组(5.6)——练习题之假设稀疏矩阵A采用三元组表示,编写一个函数计算其转置矩阵B,要求B也用三元组表示(C表示)

题目假设稀疏矩阵A采用三元组表示,编写一个函数,计算其转置矩阵B,要求B也用三元组表示。分析第一种思路是,首先将用三元组表示的稀疏矩阵A转换成稀疏矩阵的形式,然后稀疏矩阵进行转置,转置后再将其用三元组表示。第二种思路是,根据给定一个稀疏矩阵构造三元组的方法可以知道,三元组内元素是原矩阵按照行优先存储的结果,因此实现三元组存储的转置运算不能简单地将其中各个元素的行下标和列下标互换,正确的算法应该等效于互换三元组中各个元素的行下标与列下标,并将其按照原矩阵列优先的顺序存储。假设原矩阵为A,具体的

2020-05-26 19:04:17 2255

原创 考研数据结构之数组(5.6)——练习题之根据给定的稀疏矩阵创建三元组存储结构B并查找给定元素x是否在矩阵中(C表示)

题目给定稀疏矩阵A(int型),然后创建其三元组存储结构B,查找给定元素x是否在矩阵中。分析三元组存储结构是一种顺序结构,因此也是一种顺序表,表中的每个结点对应稀疏矩阵的一个非零元素,其中包括3个字段,分别为该元素的值、行下标和列下标。另外,用第0行的第1个元素存储矩阵中非零元素的个数,第0行的第2个元素存储矩阵的行数,第0行的第3个元素存储矩阵的列数。代码根据给定稀疏矩阵创建三元组存储结构的代码如下:/* 根据给定的稀疏矩阵A(int型)创建三元组存储结构 *//* A[]..

2020-05-26 17:24:25 619 1

原创 LeetCode之169. 多数元素

概要题目来源链接:https://leetcode-cn.com/problems/majority-element/难度:简单类型:链表题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2分析第一种思路是,计算数组中每个元素的重复次数,..

2020-05-26 17:07:04 208

原创 考研数据结构之数组(5.6)——练习题之统计矩阵中既是所在行中最小(大)值又是所在列中最小(大)值(C表示)

题目设计一个算法,对给定的一个整型mxn矩阵A,统计这个矩阵中具有下列特征的元素个数并输出它们的坐标及数值:它们既是所在行中的最小值,又是所在列中的最小值;或者它们既是所在行中的最大值,又是所在列中的最大值。假设矩阵中元素各不相同,要求结果在处理过程中用输出语句输出。分析即只需要找出某行上的最小值(最大值),然后判断其是否为对应列的上的最小值(最大值)即可。代码核心代码如下:/* 获取矩阵A中既是所在行最大值,又是所在列最大值的数字的数目、值、行下标和列下标 *//* A[][M

2020-05-26 11:51:50 1062

原创 考研数据结构之数组(5.6)——练习题之将数组分为左右两个部分,其中左半部分的元素值均小于等于A[n-1],右半部分的元素值均大于A[n-1],而A[n-1]位于这两部分之间的算法(C表示)

题目设有一元素为整数的线性表L,存放在一-维数组A[0,.n-1]中,设计一个算法,以A[n-1]为参考量,将该数组分为左右两个部分,其中左半部分的元素值均小于等于A[n-1],右半部分的元素值均大于A[n-1],A[n-1]则位于这两部分之间。要求结果仍存放在数组A中。分析代码核心代码如下:/* 将大于num[m-1]的元素都移动到num[m-1]的后面,将小于等于num[m-1]的都移动到其前面 *//* num[]指的是要移动的数组;m指的是数组中的元素个数 */ ...

2020-05-26 11:43:30 1444

原创 考研数据结构之数组(5.6)——练习题之使用递归算法实现最大值、求和及平均值的计算(C表示)

题目关于浮点型数组A[0, .. , n-1],设计实现下列运算的递归算法:(1)求数组A中的最大值;(2)求数组中n个数之和;(3)求数组中n个数的平均值。分析(1)如果数组长度为1,则可以直接返回最大值;否则将数组A视为两部分,即A[0]和A[1, ... , n-1]。如果A[0]大于A[1, ... , n-1]中的最大值,则返回A[0],否则返回A[0],反之按照上一步的方法递归地处理A[1]和A[2, ... , n-1]。(2)如果数组长度为1,则可以直接返回求和结

2020-05-25 22:47:51 2698 1

原创 考研数据结构之线性表(1.7)——练习题之查找链表中倒数第k个位置上的结点(C表示)

题目已知有一个带头结点的单链表,结点结构为data next假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。分析第一种思路根据倒数第k个位置计算出正数的位置,首先获取所有结点的个数,然后正数的位置为length-k+1,再求在正数位置的结点即可。第二种思路是从头至尾遍历单链表,并用指针p指向当前结点的前k个结点。当遍历到链表的最后一个.

2020-05-25 22:27:15 1167 1

原创 考研数据结构之线性表(1.7)——练习题之有int型数组中A和i,要求只用上述变量(A[0]-A[N-1]与i,这N+1个整形变量)写一个算法找出这N个整数中的最小者(C表示)

题目有N个个位正整数存放在int型数组A[0, ... ,N-1]中,N是己定义的常量且N<9,数組A[]的长度为N,另给一个int型变量i,要求只用上述変量(A[0]~A[N-1]与i, 这N+1个整型変量)写一个算法,找出这N个整数中的最小者,并且要求不能破坏数組A[中的数据。分析通常在顺序表中找最小值,需要一个循环变量i来控制循环和一个始终记录当前所扫描序列中最小值的变量min.本题则不同,题目要求只能用A[0]~A[N-1]和i这N+1个变量,且要求不能破坏数组A[]中的数据,..

2020-05-25 19:51:03 4055 2

原创 考研数据结构之线性表(1.7)——练习题之找出整数序列A的主元素(C表示)

题目已知一个整数序列A=(ao,a,..an-1),其中0≤a<n(0≤i<n)。若存在a(p1)=a(p2)=...=a(pm)=x且m>n/2(0≤p(k)<n,1≤k≤m),则称x为A的主元素。例如,A=(0,5,5,3,5,7,5,5),则5为主元素;又如,A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设A中的n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素:否则输出-1。...

2020-05-25 17:42:36 1889 4

endata完整可运行js

是可以在node.js环境下运行的js解密示例

2023-11-08

浮动属性float的应用源码

笔记:浮动属性float的应用的全部源代码。

2018-12-01

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

TA关注的人

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