![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法数据结构
AlexCookie
感谢互联网,让我在知识的海洋遨游,感谢广大网友,把所学知识分享,咱们一起进步!博主主分享:算法,计算机方向。
展开
-
计算机复试题总结(四)
一,银行家算法序号 已分配 需要 可获得0 0 0 3 2 0 0 1 2 1 6 2 21 1 0 0 0 1 7 5 0 2 1 3 5 4 2 3 5 63 0 3 3 2 0 6 5 24 0 0 1 4 06 5 6该状态是否安全 若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?序号 ...原创 2022-03-23 22:34:18 · 2204 阅读 · 0 评论 -
建立一个二叉树 并 中序遍历二叉树
建立一个二叉树 并中序遍历二叉树code:/*建立一个二叉树 并 中序遍历二叉树*/#include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ char data; struct node *lchild,*rchild;}bnode;typedef struct node * blink;//建立 二叉数.原创 2021-11-18 20:06:43 · 1529 阅读 · 0 评论 -
由先缀表达式建立二叉树,求该 表达式对应的后缀,中缀表达式
由先缀表达式建立二叉树,求该 表达式对应的后缀,中缀表达式建树代码://先序 建立 二叉数 blink create_binary(){ blink bt; char ch; ch = getchar(); if (ch == '#') { bt = NULL; } else { bt = (blink)malloc(sizeof(bnode)); bt->原创 2021-11-18 20:04:14 · 2065 阅读 · 1 评论 -
实现按层次遍历二叉树
实现按层次遍历二叉树主要代码:void sequence(blink bt){ queue<blink> s; s.push(bt); while(s.empty() == 0)//该函数返回0说明不为空(为空 会返回1) { printf("%c",s.front()->data);//打印 将出队结点 的元素值 s.push(s.front()->lchild); //左孩子 进队 s.push(s.front()->rchi...原创 2021-11-18 19:59:48 · 589 阅读 · 0 评论 -
建立合法的表达式字符串只含二元操作符的非空表达式数用二叉树遍历算法求该中缀表达式对应的后缀,前缀表达式
建立合法的表达式字符串只含二元操作符的非空表达式数用二叉树遍历算法求该中缀表达式对应的后缀,前缀表达式/*建立合法的表达式字符串只含二元操作符的非空表达式数用二叉树遍历算法求该中缀表达式对应的后缀,前缀表达式*/#include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ char data; struct node *lc原创 2021-11-18 19:55:46 · 644 阅读 · 0 评论 -
稀疏矩阵运算器,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,~实现两个矩阵相加,相减或者相乘的运算。
稀疏矩阵运算器,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,~实现两个矩阵相加,相减或者相乘的运算。~稀疏矩阵的输入形式 采用三元组表示,运算结果矩阵 以通常阵列形式列出CODE:/*稀疏矩阵运算器,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,~实现两个矩阵相加,相减或者相乘的运算。~稀疏矩阵的输入形式 采用三元组表示,运算结果矩阵 以通常阵列形式列出 */#include <stdio.h>#include <string.h>..原创 2021-11-17 22:08:42 · 2123 阅读 · 1 评论 -
设计 一个 算法将 串中所有字符倒过来重新 排列,类似于 algorithm 库中的reverse函数或者 使用string.h库中的strrev函数
设计 一个 算法将 串中所有字符倒过来重新 排列,类似于 algorithm 库中的reverse函数或者 使用string.h库中的strrev函数/*设计 一个 算法将 串中所有字符倒过来重新 排列,类似于 algorithm 库中的reverse函数或者 使用string.h库中的strrev函数*/#include <stdio.h>char c[101] = {'\0'};/*s字符串 不能被直接 在原串 赋值(只能串与串赋值),或者 加个媒介c[]数原创 2021-11-17 22:07:04 · 551 阅读 · 0 评论 -
顺序结构存储串编写一个函数 index(s1,s2) 用于判断s2是否 是s1的字串,若是,返回 其在主串的 位置,否则返回 -1
顺序结构存储串编写一个函数 index(s1,s2) 用于判断s2是否 是s1的字串,若是,返回 其在主串的 位置,否则返回 -1/*顺序结构存储串编写一个函数 index(s1,s2) 用于判断s2是否 是s1的字串,若是,返回 其在主串的 位置,否则返回 -1 */#include <stdio.h>//传入 两个 数组 变量, 进行 遍历比对 int index(char a[],char b[]){ //如果 传入的 数组 不符合 要求,直接 返回 .原创 2021-11-17 22:05:07 · 2136 阅读 · 0 评论 -
删除串s1中所有s2字串
特别注意的如下图caabcbc 删除 abc 后 cabc 仍有 abc 显然 还得 删除 abc结果为 c。然后 向前 覆盖 子串 一样的 长度,覆盖结束(删除),末尾也 清零 子串一样 的长度删除串s1中所有s2字串code:/*删除串s1中所有s2字串 */#include <stdio.h>#include <string.h>//打印 void prin_array(char a[]){ for(int i = 0;..原创 2021-11-17 22:02:16 · 661 阅读 · 0 评论 -
算符优先法 对算术 表达式 求值以算符优先法 形式 从 终端 输入语法正确,不含变量的 整数 表达式实现 对四则 混合运算 表达式 的 求值 ,运用 运算符栈,输入字符和主要操作变化过程
演视用算符优先法 对算术 表达式 求值以算符优先法 形式 从 终端 输入语法正确,不含变量的 整数 表达式实现 对四则 混合运算 表达式 的 求值 ,运用 运算符栈,输入字符和主要操作变化过程/*演视用算符优先法 对算术 表达式 求值以算符优先法 形式 从 终端 输入语法正确,不含变量的 整数 表达式实现 对四则 混合运算 表达式 的 求值 ,运用 运算符栈,输入字符和主要操作变化过程 */#include <stdio.h>#include <string.h&.原创 2021-11-15 22:02:32 · 598 阅读 · 0 评论 -
括号匹配包括 圆括号,方括号,花括号 3种,判断其是否匹配。
括号匹配包括 圆括号,方括号,花括号 3种,判断其是否匹配。/*括号匹配包括 圆括号,方括号,花括号 3种,判断其是否匹配。 *///准备栈实现 #include <stack>//c++函数空间里面 #include <stdio.h>//c 的 输入输出 等函数 #include <string.h>//包含 strlen() 获取 字符串 大小 函数 using namespace std;//告诉 编译器 要 使用 c ++ std空间.原创 2021-11-15 21:56:53 · 1479 阅读 · 0 评论 -
使用栈(非调用)判断该字符串是否中心对称,如 abccba 即为 中心对称 字符串
使用栈(非调用)判断该字符串是否中心对称,如 abccba 即为 中心对称 字符串/*使用栈(非调用)判断该字符串是否中心对称,如 abccba 即为 中心对称 字符串*/#include <stdio.h>#include <malloc.h>//include malloc()#define Maxlen 100typedef struct node{ char data; struct node *next;}cnode;cnode *cre原创 2021-11-15 21:54:45 · 948 阅读 · 1 评论 -
解决 约瑟夫 问题。现在 输出 约瑟夫 序列(重复 直到所有人 出列 )如n=8,m=4,s=1 则序列:4,8,5,2,1,3,7,6
现在 输出 约瑟夫 序列(重复 直到所有人 出列 )如n=8,m=4,s=1 则序列:4,8,5,2,1,3,7,6/*解决 约瑟夫 问题。(39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。.原创 2021-11-14 22:20:16 · 2390 阅读 · 0 评论 -
生成两个多项式PA PB,求PA和PB之和,输出 “和多项式”
生成两个多项式PA PB,求PA和PB之和,输出 “和多项式”/*生成两个多项式PA PB,求PA和PB之和,输出 “和多项式” *///#include <iostream>//using namespace std;#include <stdio.h>#include <malloc.h>//包含 malloc 申请动态空间 函数 //结构体 typedef struct PNode{ double coef; .原创 2021-11-14 22:18:12 · 411 阅读 · 0 评论 -
生成 非递减 有序 线性表 LA,LB。将LA,LB归并为 新表LC,--且LC中同样 非值递减 排序,--输出LA,LB,LC
--生成 非递减 有序 线性表 LA,LB。--将LA,LB归并为 新表LC,--且LC中同样 非值递减 排序,--输出LA,LB,LC/*--生成 非递减 有序 线性表 LA,LB。--将LA,LB归并为 新表LC,--且LC中同样 非值递减 排序,--输出LA,LB,LC *///#include <iostream>//using namespace std;#include <stdio.h>#include <algorithm>.原创 2021-11-14 22:15:20 · 1832 阅读 · 0 评论 -
统计 选票 按单链表 存放选票 编号 1,2,3,...,N,且 一人 只有 一票
统计 选票 按单链表 存放选票 编号 1,2,3,...,N,且 一人 只有 一票/*统计 选票 按单链表 存放选票 编号 1,2,3,...,N,且 一人 只有 一票 */#include <stdio.h> //包含 scanf() printf() 等输入输出 函数 #include <stdlib.h>//包含 随机 函数 rand() #include <time.h> //含tiem()函数 获取 当前 时间 #include <m.原创 2021-11-14 22:12:30 · 324 阅读 · 0 评论 -
试给出单链表类型定义,假定元素类型为整型,链表带有头结点,编写函数实现对单链表中的指定元素值为e的结点删除操作,假定元素值为e的结点一定存在。
/*试给出单链表类型定义,假定元素类型为整型,链表带有头结点,编写函数实现对单链表中的指定元素值为e的结点删除操作,假定元素值为e的结点一定存在。*/#include <iostream>#include <malloc.h>#define size 10 using namespace std;typedef struct node{ int e; struct node *next;}node,*list;//style struct int e nod.原创 2021-11-07 22:59:10 · 485 阅读 · 0 评论 -
试给出顺序表类型定义,假定顺序表元素类型为整型,顺序表最大长度为max,编写函数对顺序表的指定下标位置(Pos)实现插入某元素值为e的操作.
/*试给出顺序表类型定义,假定顺序表元素类型为整型,顺序表最大长度为max,编写函数对顺序表的指定下标位置(Pos)实现插入某元素值为e的操作.*/#include <stdio.h>#include <iostream>#define MAX 20using namespace std;void get_length(int a[]);void print_sq(int a[]);void insert(int a[],int pos,int e);//.原创 2021-11-07 22:58:20 · 590 阅读 · 0 评论 -
编写函数,用栈实现十进制转换为二进制的操作。假定堆栈的基本操作已实现,基本操作有voidpush (elemtype e)/l入栈,elemtype pop()//出栈,voidinitial_s
/*编写函数,用栈实现十进制转换为二进制的操作。假定堆栈的基本操作已实现,基本操作有voidpush (elemtype e)/l入栈,elemtype pop()//出栈,voidinitial_stack ()//初始化栈,int is_empty(stack s)//*/#include <stack>#include <iostream>using namespace std;stack<int> s;void conversion_bi.原创 2021-11-07 22:57:10 · 332 阅读 · 0 评论 -
试给出单链表类型定义,假定元素类型为整型,链表带有头结点,编写函数实现对单链表中的指定元素值为e的结点删除操作,假定元素值为e的结点一定存在。
/*试给出单链表类型定义,假定元素类型为整型,链表带有头结点,编写函数实现对单链表中的指定元素值为e的结点删除操作,假定元素值为e的结点一定存在。*/#include <iostream>#include <malloc.h>#define size 10 using namespace std;typedef struct node{ int e; struct node *next;}node,*list;//style struct int e nod.原创 2021-11-07 22:55:48 · 300 阅读 · 0 评论 -
顺序表单链表-实现线性表就地转置
/*用 线性表 和 单链表 的 存储 结构,来实现 线性表的 转置将线性表(a0,a1,a2,......,an-1)就地逆置即辅助 空间 O(1)*//*用 线性表 和 单链表 的 存储 结构,来实现 线性表的 转置 将线性表(a0,a1,a2,......,an-1)就地逆置即辅助 空间 O(1) */#include <stdio.h>#include <malloc.h>//单链表 typedef struct node{ int dat原创 2021-10-26 17:11:30 · 901 阅读 · 0 评论 -
序列按负数零整数次序排列--o(n),o(1)
模拟 sort() 函数 按负数(-1) 零 正数(1) 的次序 排好时间复杂度 o(n)空间复杂度 o(1)/*模拟 sort() 函数 按负数(-1) 零 正数(1) 的次序 排好时间复杂度 o(n)空间复杂度 o(1) */#include <stdio.h>#define Maxsize 10// 模拟 排序 void sort(int a[]){ int count_plus = 0,count_minus = 0,count_zero = 0;//记录原创 2021-10-25 17:42:59 · 123 阅读 · 0 评论 -
单向链表-按出现次数降序
Unidirectional linked listDescending order(1)数重复 保留一个(2)以 出现次数 降序/*Unidirectional linked listDescending order(1)数重复 保留一个 (2)以 出现次数 降序 */#include <stdio.h>#include <iostream>#include <malloc.h>using namespace std;typedef原创 2021-10-25 12:36:34 · 115 阅读 · 0 评论 -
非递归算法中序遍历二叉树
//Non recursive middle order#include <iostream>#define Maxsize 10using namespace std;typedef struct BitreeNode{ int data;//data struct BitreeNode *ltree,*rtree;//right/left node}BiTNode,*BiTree;void readTree(BiTree T)//root node{ BiTr...原创 2021-10-24 23:05:22 · 1656 阅读 · 0 评论 -
算法-分支界限法任务分配问题
描述:任务分配问题要求把n个任务分配给n个人,每个人完成每项任务的成本不同,要求分配总成本最小的分配方案。 int middle_arr[task_size][task_size] = //初始化 { {9,2,7,8}, {6,4,3,7}, {5,8,1,8}, {7,6,9,4} };#include <iostream>//包含 memcpy 二维数组 复制函数 #include <...原创 2021-10-20 16:37:53 · 1576 阅读 · 0 评论 -
算法-回溯法解装载问题
有一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi。找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,---将尽可能重的集装箱装上轮船。/*有一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi。找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。*/#include <stdio.h>#include <iostream>#define num 10us原创 2021-10-18 22:58:28 · 804 阅读 · 0 评论 -
算法-贪心法背包问题
权重=价值/重量来衡量物品,优先装入权重大的#include <iostream>#include <stdio.h>#include <algorithm>//含sort #include <string.h>//包含memset 初始化函数 #define num 4using namespace std;//背包 贪心算法 typedef struct{//保证 权重sort排序后 仍能 和其价值 重量 一一对应 doubl原创 2021-10-16 18:36:07 · 109 阅读 · 0 评论 -
算法-动态规划法01背包问题
动态规划code//arithmetic_01backpack_DP#include <iostream>#include <stdio.h>#include <string.h>//包含memset 初始化函数 #define num 4using namespace std;//01 背包 动态规划 0222 0235 02357 int value[num] = {2,4,3,7},weight[num] = {2,3,5,5};原创 2021-10-15 19:20:43 · 62 阅读 · 0 评论 -
算法-回溯法解01背包问题
如果 此时求10的最大值,只需要对比 本身重量 为10的数 与 加起来 ‘两’ 个最大为10的 数的重量过程如下:code:#include <iostream>#include <stdio.h>#define num 4using namespace std;//01 背包 回溯法 求出每个 体积 的最大,然后 让当前重量和背包体积一样的物体(若存在) 价值 和之前回溯价值 取较大值 int value[num] = {2,4,3,7},we原创 2021-10-15 17:47:59 · 1042 阅读 · 0 评论 -
算法-分治法解棋盘覆盖问题(c++)
//chessboard covering divide and conquer method#include <iostream>#define Maxnum 1001using namespace std;int chessboard[Maxnum][Maxnum];//chessboard max numint Order = 0;//The order of filling dominoes is not the execution order of code filling.原创 2021-10-14 14:43:33 · 360 阅读 · 0 评论 -
算法-蛮力法解最近点
#include <iostream>#include <cmath>using namespace std;typedef struct point{ double x; double y;}point;double end_min = 100001;//strength_closest_pairdouble strength_closest_pair(point a[],int n){ if (n == 0) { cout << ".原创 2021-10-13 20:38:47 · 69 阅读 · 0 评论