数据结构与算法
文章平均质量分 57
数据结构与算法
emPoint
每天进步一点点
展开
-
替换空格
题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题意解读:输入一字符串,将字符串中的空格替换为 %20,因此,需注意,替换后的字符串与原字符串的长度不一致思路:从前往后遍历------目的是找出字符串的真实长度,以及空格的个数 从后往前替换--...原创 2019-06-01 11:34:37 · 279 阅读 · 0 评论 -
c 和 Python 实现希尔排序
#include <iostream> using namespace std; #define MAXSIZE 5typedef struct{ int r[MAXSIZE+1]; int length;}SqList;//希尔排序void ShellSort(SqList *L){ int i, j; int increment =...原创 2018-08-30 10:42:25 · 160 阅读 · 0 评论 -
c 和 Python 实现快速排序(优化快速排序)
C:#include <iostream> using namespace std; #define MAXSIZE 9//#define MAXSIZE 5typedef struct{ int r[MAXSIZE+1]; int length;}SqList;void swap(SqList *L, int i ,int j){ ...原创 2018-09-09 12:22:23 · 407 阅读 · 0 评论 -
c 和 Python 实现归并排序 (递归,非递归)
C:#include <iostream> using namespace std; #define MAXSIZE 9typedef struct{ int r[MAXSIZE+1]; int length;}SqList;//递归实现归并排序void Merge(int SR[],int TR[],int i ,int m ,int n)...原创 2018-09-09 12:10:57 · 1467 阅读 · 0 评论 -
漫谈 数组与指针 (C++ 程序讲解)
一.int a[3]={11,22,33};int *p=a;此时 a 为指针,指向数组首元素,即a的值为数组首元素的地址int (*p)[3]=&a;此时 a 为数组名,&a 指向整个数组,即 &a 的值为数组的首地址虽然 a 与 &a 数值一样,但代表的意思则不一样 二. int *p[3] 与 int (*p)[3] 的区别1....原创 2018-10-24 20:25:10 · 211 阅读 · 0 评论 -
数据结构错题汇总(持续更新)
------有错请指正!!!------ 1.设栈的初始状态为空,当字符序列a3_作为栈的输入时,输出长度为3的且可以用作C语言标识符的字符串序列有()个解析:首先,栈的顺序是先进后出字符序列为a3_ 1)a入栈,再出栈,然后3入栈,再出栈,—入栈,再出栈 序列是a3_ 2)a入栈...原创 2018-06-25 19:51:39 · 4242 阅读 · 0 评论 -
线性结构定义
线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件原创 2018-06-25 19:37:53 · 1960 阅读 · 0 评论 -
栈与递归
栈:限定仅在表尾进行插入和删除操作的线性表递归:直接调用自己或通过一系列的调用语句间接地调用自己的函数,称做递归函数当运行程序,系统会为该程序分配运行空间,存储空间(存储变量等),而存储空间的数据结构类型有很多种随着编程的规范,存储不同类型数据的数据结构也有规范例如:当你调用一个函数时,系统会将这个函数进行入栈操作,在入栈之前,通常需要完成三件事。 1、将所有的实参、返回地址等信息传递给被调函数...原创 2018-06-23 16:36:06 · 806 阅读 · 0 评论 -
串(字符串)--数据结构
定义:串是由零个多个字符组成的有限序列,又叫字符串一般形式: s=‘a1a2a3 … am’,其中s是串的名称,用引号括起来的字符序列是串的值notice1: 引号并不为串的内容字符串中的 值可以是字母,数字或其他字符字符串长度为m,由定义可知,m必须为有限值notice2:空字符串和空格串不是同一个东西例: 空字符串表示为 ‘’或‘''' 空格串表示为‘ ’...原创 2018-06-15 19:58:06 · 437 阅读 · 0 评论 -
循环队列及关于取余数的见解
1.若你想将一个数p归到 0- n 的范围(n!= 0 ,1)只需 p%n例:归到0- 9 95%9=5归到0-594%5=4应用循环队列满的条件(rear+1)%QueueSize==front原创 2018-06-14 20:45:01 · 5477 阅读 · 2 评论 -
递归
任何一个递归过程都可以转换成非递归过程原创 2018-06-14 20:54:29 · 185 阅读 · 0 评论 -
解析:vector 使用erase之后 输出什么
#include "iostream" #include "vector" using namespace std; int main(void) { vector<int>array; array.push_back(100); array.push_back(300); array.push_back(300); ar...原创 2018-06-14 20:47:12 · 1119 阅读 · 0 评论 -
字符串中找出连续最长数字串(c++)
题目:读入一个字符串str,输出字符串str中的连续最长的数字串示例1:输入:aaa2222ss2s222输出:2222 思路:1.遍历字符串,根据字符不同给数组赋值,若该字符不为数字,则置零;若为数字,则从1开始赋值,依次递增,遇见非数字则置零示例2:aaa222a22a 对应数组值为 00012301202.遍历数组,找出数组中值最大的元素,及其位置示...原创 2018-11-23 15:38:09 · 1863 阅读 · 0 评论 -
求 1-N 的所有素数 (c++实现)
要求:求 1-N 所有的素数素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数思路:对于 1-N 中的某个数 k,判断 k 在 2- (k-1)中是否有数 j 满足 k%j==0,若有,则 k 不为素数;若没有则 k 为素数。 代码:#include <iostream>#include <vector>using namespace...原创 2018-11-15 13:52:59 · 8150 阅读 · 0 评论 -
最大奇约数(c++实现)
一.若求一个数 N 的最大奇约数 t若 N 为奇数,则 t=N ;若 N 为偶数,则 mid=N/2,if mid 为奇数 则 t=mid if mid 为偶数 则重复循环,知道mid为奇数 二.若求1-N 之间每个整数的最大奇约数的和1.枚举法先求出每个整数的最大奇约数,再求和这...原创 2018-11-07 12:02:35 · 1208 阅读 · 0 评论 -
求一数组的每一个连续子数组的元素和 (c++实现)
题目解读:假设 数组 int a[5]={3,1,2,4,5}连续子数组:{3,1},{3,1,2}等等现求每一个连续子数组的和方法1:暴力法(暴力法有很多种实现方式)1.#include <iostream>#include <vector>using namespace std;int main(){ int n; ...原创 2018-11-06 19:30:36 · 1140 阅读 · 0 评论 -
用两个栈实现队列
思考:1.什么是栈?2.什么是队列3.如何实现?栈和队列都为特殊的线性表,栈是先进后出,队列是先进先出,所以问题转化为如何使用两个栈实现先进先出 思路:进队列时将元素放到栈1 ,出队列时先将栈2 的元素弹出,再将栈1 的元素放到栈2 中,再弹出 代码:...原创 2018-10-18 18:43:51 · 119 阅读 · 0 评论 -
求 1 - N 的所有组合 (c++实现)
要求:求 1 - N 的所有组合,数字不重复 思路:求 1-n 的n个数的组合等价于 求n位二进制数哪几位等于1即对于 i(i为某个n位二进制数),要知道 i 的哪些位等于1,用一个知道某位上为 1 的数与 i 相与,若结果为 1,则证明i在该位上为 1,输出对应位数 代码:#include <iostream>#include<vector&g...原创 2018-10-13 11:32:41 · 1577 阅读 · 0 评论 -
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来(c++ 实现)
题目:输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合 思路:获取所有组合,再进行求和,判断是否等于m实现步骤:1.获取所有组合求 1-n 的n个数的组合等价于 求n位二进制数哪几位等于1即对于 i(i为某个n位二进制数),要知道 i 的哪些位等于1,用一个知道某位上为 1 的数与 i 相与,若结果为 1,...原创 2018-10-13 11:26:46 · 1330 阅读 · 0 评论 -
c++ 实现 二维数组查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:整数t1.数组是否为空2.数组最小的元素比 t 大 或户主最大的元素比 t 小3.二分法查找数组循环每一行,对每一行进行二分查找 代码:class Soluti...原创 2018-10-07 10:49:29 · 1572 阅读 · 0 评论 -
C++ 计算二维数组的行数与列数
int array[2][3] ;方法1 :int len=sizeof(array)/sizeof(int); int len2=sizeof(array[0])/sizeof(int); //列的维度int len3=len/len2; //行的维度PS:sizeof():返回所占总空间的字节数 方法2:int row = (int)array.size()...原创 2018-09-11 16:25:48 · 5770 阅读 · 0 评论 -
c 和 Python 实现堆排序
#include <iostream> using namespace std; #define MAXSIZE 9typedef struct{ int r[MAXSIZE+1]; int length;}SqList;//堆排序 1.构建堆(构建特殊的完全二叉树)void HeapAdjust(SqList *L,int s ,int m)...原创 2018-08-30 10:57:54 · 115 阅读 · 0 评论 -
c 和 Python 实现直接插入排序
C:#include <iostream> using namespace std; #define MAXSIZE 5typedef struct{ int r[MAXSIZE+1]; int length;}SqList;//直接插入排序void InsertSort(SqList *L){ int i, j; for...原创 2018-08-27 20:07:36 · 116 阅读 · 0 评论 -
c 和 Python 实现简单选择排序
c:#include <iostream> using namespace std; #define MAXSIZE 10typedef struct{ int r[MAXSIZE+1]; int length;}SqList;void swap(SqList *L, int i ,int j){ int temp =L-> r[i...原创 2018-08-27 16:54:39 · 388 阅读 · 0 评论 -
c 和 Python 实现交换排序,冒泡排序,改进冒泡排序
c:#include <iostream> using namespace std; #define MAXSIZE 10typedef struct{ int r[MAXSIZE+1]; int length;}SqList;void swap(SqList *L, int i ,int j){ int temp =L-> r[i...原创 2018-08-23 10:07:15 · 389 阅读 · 0 评论