自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 Centos7的cuda+cuDNN安装过程(集群无sudo权限用户)

安装环境Centos7(使用学校的服务器,无sudo权限)anacondaxftp什么是CUDACUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。什么是CUDNNNVIDIA cuDNN是用于深度神经网络的GPU加速库。...

2020-04-02 11:04:52 4213 1

原创 王道课后习题4.3.16:试设计判断两棵二叉树是否相似的算法。相似指的是T1和T2都是空的二叉树或都只有一个根结点;或T1的左子树和T2的左子树是相似的且T1的右子树和T2的右子树是相似的

bool Similar(TNode *p1,TNode *p2){ if(p1==NULL&&p2==NULL) return true; else if(p1==NULL||p2==NULL) return false; else { bool l=Similar(p1->lchild,p2...

2019-10-03 21:47:08 697

原创 王道课后习题4.3.16:将叶结点按从左到右的顺序连成单链表,表头指针为head,链接时用叶结点的右指针域存放单链表指针

TNode *head=NULL;TNode *r=NULL;TNode* inorder_L(TNode* p){ if(p!=NULL) { inorder_L(p->lchild); if(p->lchild==NULL&&p->rchild==NULL) { if...

2019-10-03 21:45:42 452

原创 王道课后习题4.3.14:求非空二叉树b的宽度

void level_breath(TNode* T){ Queue Q; InitQueue(Q); TNode* p=T; int level=0; int last=1; int a[MaxSize]; for(int i=0;i<MaxSize;i++) { a[i]=0; } if(T...

2019-10-03 17:07:27 649 1

原创 王道课后习题4.3.13:查找p和q的最近公共祖先结点r

TNode* Parent_Common(TNode* root,char p,char q){ Stack S1; Stack S2; InitStack(S1); InitStack(S2); TNode* b1=root; TNode* b2=root;//不可以用同一个b,因为第一个while循环里b会改变。 TNode* r=NU...

2019-10-03 16:28:46 1735 7

原创 王道课后习题4.3.12:在二叉树中查找值为x的结点,打印值为x的结点的所有祖先,假设值为x的结点不多于一个

算法思想:采用非递归后序遍历,最后访问根结点,当访问到值为x的结点时,栈中所有元素均为该结点的祖先,依次出栈打印即可。int PrintParent_1(TNode* &p,char x){ Stack S; InitStack(S); TNode* r=NULL; while(!StackEmpty(S)||p!=NULL) { ...

2019-10-03 16:11:09 6493 13

原创 王道课后习题4.3.11:对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间

void del_x(TNode* p){ if(p!=NULL) { del_x(p->lchild); del_x(p->rchild); free(p);//最后释放根 }}int del_x_Q(TNode* p,char x){ Queue Q; InitQueue(Q); ...

2019-10-02 11:29:36 565

原创 王道课后习题4.3.9:交换二叉树左右子树

void exchange(TNode* p){ if(p!=NULL) { exchange(p->lchild); exchange(p->rchild); TNode* temp=p->lchild; p->lchild=p->rchild; p->rchil...

2019-10-01 17:33:19 246 2

原创 王道课后习题4.3.8:求二叉树所有双分支结点个数

int Double_Branch(TNode* p){ Queue Q; InitQueue(Q); EnQueue(Q,p); int k=0; while(QueueEmpty(Q)!=true) { DeQueue(Q,p); bool l_flag,r_flag; l_flag=r_flag...

2019-10-01 17:24:35 860

原创 王道课后习题4.3.7:判断二叉树是否为完全二叉树

采用层次遍历的算法,将所有结点加入队列(包括空结点)。当遇到空结点时,查看其后是否有非空结点。若有,则二叉树不是完全二叉树。bool Judge_Complete_1(TNode* p){ Queue Q; InitQueue(Q); if(p==NULL) return true; EnQueue(Q,p); while(QueueEm...

2019-10-01 11:38:00 286 1

原创 王道课后习题4.3.6:根据先序中序序列(一维数组)构建二叉树

设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1……n]和B[1……n]中,编写算法建立该二叉树的二叉链表TNode* PreInCreate(char S1[],char S2[],int l1,int r1,int l2,int r2){ //初始时,l1=l2=1,r1=r2=n int i,l_len,r_len; TNo...

2019-09-30 21:47:11 445

原创 王道课后习题4.3.5:非递归算法求二叉树的高度

算法思想:A:front=rear=0,last=1A出队后[B(1),C(2)],front=1=last,level++,last更新为2等front再次等于last的时候,第二层的结点就遍历完了,level再次++void THeigh(TNode* p){ Queue Q; InitQueue(Q); int last=1; //这里王道写的是l...

2019-09-30 20:48:54 527

原创 王道课后习题4.3.4:二叉树的自下而上,从右到左的层次遍历算法

void level_reverse(TNode* p){ Queue Q; Stack S; InitQueue(Q); InitStack(S); if(p!=NULL) { EnQueue(Q,p); while(!QueueEmpty(Q)) { DeQueue(Q,p...

2019-09-30 20:16:46 843

原创 王道课后习题4.3.3:编写后序遍历二叉树的非递归算法

后序:void postorder_1(TNode* bt){ Stack S; InitStack(S); TNode* p=bt; TNode* r=NULL; while(!StackEmpty(S)||p!=NULL) { while(p!=NULL) { Push(S,p); ...

2019-09-30 20:15:01 1353 1

原创 图的建立(邻接表方式)

#include <stdio.h>#include <algorithm>#define MaxSize 10typedef struct ArcNode{ int adjvex; struct ArcNode* nextarc; //int info;}ArcNode;typedef struct VNode{ char...

2019-09-07 21:24:39 589 1

原创 二叉树深度

int Tree_Depth(TNode* &T){ if(T==NULL) return 0; int hl=Tree_Depth(T->lchild); int hr=Tree_Depth(T->rchild); return hl>hr?hl+1:hr+1;}这样写比较好理解,先递归左子树,再递归右子树,返回两...

2019-09-04 20:45:27 109

原创 二叉树的层次遍历

void LevelOrder(TNode* &T){ Queue Q; InitQueue(Q); EnQueue(Q,T); while(QueueEmpty(Q)!=true) { DeQueue(Q,T); visit(T); if(T->lchild!=NULL) ...

2019-08-30 21:15:16 141

原创 二叉树的先序、中序、后序非递归遍历

先序遍历非递归:void PreOrder_NonRecursion(TNode* &T){ Stack S; InitStack(S); if(T!=NULL) { Push(S,T); } while(StackEmpty(S)!=true) { Pop(S,T); visit(...

2019-08-30 20:43:06 410 1

原创 二叉树的先序、中序、后序、递归遍历

void PreOrder(TNode* &T){ if(T!=NULL) { visit(T); PreOrder(T->lchild); PreOrder(T->rchild); }}void InOrder(TNode* &T){ if(T!=NULL) { ...

2019-08-30 11:17:21 175 1

原创 王道课后习题4.2.5:顺序存储结构的二叉树寻找编号分别为i和j的两个结点的最近的公共祖先结点的值

题目描述:已知一棵二叉树按顺序存储结构进行存储,设计一个算法,求编号分别为i和j的两个结点的最近的公共祖先结点的值算法思想:从1开始编号。核心代码:#include <stdio.h>#include <malloc.h>#define MaxSize 13typedef struct TNode{ char data; TNod...

2019-08-30 11:10:57 5551

原创 二叉树的建立

最终代码:#include <stdio.h>#include <malloc.h>typedef struct TNode{ char data; TNode* lchild; TNode* rchild;}TNode;void BuildTree(TNode* &T)//先序递归建立二叉树{ char ch; ...

2019-08-30 10:36:59 105

原创 递归求π

题目描述:算法思想:以递归的方式求分母,在main函数中求π值核心代码:#include <stdio.h>#include <algorithm>#include <math.h>double fun(double n){ if(n==0) return 1; if(n==1) retur...

2019-08-30 08:45:54 1503 3

原创 斐波那契数列递归与非递归算法

斐波那契数列:F(1)=1F(2)=1F(n)=F(n-1)+F(n-2)1, 1, 2, 3, 5, 8, 13, 21, 34, ……从第3项开始,每一项都等于前两项之和。递归:int fun_1(int n){ if(n==1||n==2) return 1; else { int result=fun(n-1)+fun...

2019-08-29 17:42:20 308

原创 王道课后习题3.3.1:括号匹配

题目描述:假设一个算术表达式中包含圆括号、方括号和花括号3中类型的括号,编写一个算法来判别表达式中的括号是否匹配,以字符“\0”作为算术表达式的结束符。算法思想:简单来说就是左括号都进栈,遇到右括号时检查栈顶元素是否为相应的左括号。若是,退栈,若不是,匹配错误。最后栈不为空也为错误。核心代码:int match_2(SqStack &S,char p[]){ c...

2019-08-29 16:12:47 325

原创 王道习题例3.3.1:栈在括号匹配中的应用

题目描述:假设表达式中允许包含两种括号,圆括号和方括号,其嵌套的顺序任意。算法思想:简单来说就是左括号都进栈,遇到右括号时检查栈顶元素是否为相应的左括号。若是,退栈,若不是,匹配错误。最后栈不为空也为错误。核心代码:int match_1(SqStack &S,char p[]){ int flag; char c,temp; while(*p!...

2019-08-29 16:08:02 314

原创 王道课后习题3.2.3:利用两个栈模拟一个队列

题目描述:利用两个栈模拟一个队列算法思想:/*这题真的挺巧妙的S1:<1 1入队,入S1栈S2:S1:S2:1 S2为空,S1全部元素(目前只有1)入S2栈.注意这里S1为空,之前还以为S1还存有1.当S1有元素x入栈时,如果S2为空,那么就必须把当前S1中的元素全部逆置入S2栈之后才能把元素x入S1栈——————————————————————S1:...

2019-08-29 11:42:31 301 1

原创 王道课后习题3.2.1:循环队列设置tag标志域判断队满队空

题目描述:循环队列设置tag标志域判断队满队空算法思想:tag等于0的情况下,若因删除导致Q.Rear==Q.Front则为队空tag等于1的情况下,若因插入导致Q.Rear==Q.Front则为队满核心代码://tag等于0的情况下,若因删除导致Q.Rear==Q.Front则为队空//tag等于1的情况下,若因插入导致Q.Rear==Q.Front则为队满bool ...

2019-08-29 09:45:18 1322 2

原创 王道课后习题3.1.5:共享栈

typedef struct Stack{ int data[MaxSize]; int top[2];}Stack;int push(int i,int x){ if(i<0||i>1) { printf("栈号输入不对"); return 0; } if(s.top[1]-s.top[0]==...

2019-08-29 09:22:33 207

原创 天勤习题:例3-1:判断一个表达式中的括号是否正确配对

题目描述:判断一个表达式中的括号是否正确配对,表达式已经存入字符数组exp[]中,表达式中的字符个数为n。算法思想:核心代码:int kuohao(SqStack &S,char exp[],int n){ for(int i=0;i<n;i++) { if(exp[i]=='(') { Push...

2019-08-29 09:16:55 431

原创 王道课后习题3.1.4:判断单链表的全部n个字符是否中心对称

题目描述:判断单链表的全部n个字符是否中心对称算法思想:核心代码:bool duichen(LNode* &L,int n){ SqStack S; InitStack(S); LNode* p=L->next; int i;//如果下面要用到j=i+1,i就不能写在for(int i=0)中 for(i=0;i<n/2;...

2019-08-26 20:17:59 1197

原创 王道课后习题3.1.3:判断入栈出栈序列是否合法

题目描述:判断“IOIOIOIO”这样的序列(I为入栈,O为出栈,用一维数组存储)是否为合法的操作序列算法思想:核心代码:bool fun(SqStack &S){ int x; int n=6; char s[6]={'I','O','I','O','O','O'}; for(int i=0;i<n;i++) { ...

2019-08-26 17:28:18 381

原创 顺序栈模板

自己写的模板,自己mark#include <iostream>#include <stdio.h>#include <algorithm>#define Maxsize 10//设top始终指向栈顶typedef struct SqStack{ int top; int data[Maxsize];}SqStack;voi...

2019-08-26 15:55:29 120

原创 王道课后习题2.3.23:链表中保留第一次出现的结点删除其余绝对值相等的结点

题目描述:链表中保留第一次出现的结点删除其余绝对值相等的结点算法思想:1.暴力。2.辅助数组核心代码:/*L->21->-15->15->-7->15rL->NULLp21->-15->15->-7->15*///这个方法是把头结点摘掉,依次把符合题目要求的结点插入L中。//每次插入都遍历一下L表,...

2019-08-26 15:51:37 421

原创 王道课后习题2.3.22:两个链表的共同后缀

题目描述:带头结点的单链表,寻找两个链表的共同后缀的起始位置。算法思想:双指针法核心代码://双指针法int Length(LNode* L)//注意:这里之前写成了int Length(LNode* &L)用的引用。//这样的话,head1和head2最后都会变成NULL。难怪执行不对。{ int k=0; while(L!=NULL) {...

2019-08-26 11:14:53 339

原创 王道课后习题2.3.21:查找链表倒数第k个位置上的结点

题目描述:查找链表倒数第k个位置上的结点(带头结点)算法思想:找到同时移动的位置核心代码:int find_k(LNode* &L,int k){ if(k<0)//还得判断k有没有大于链表长度 return 0; LNode *p,*q; p=q=L->next; while((--k)!=0) {...

2019-08-26 10:43:50 141 1

原创 王道课后习题2.3.20:非循环双向链表访问频度域

题目描述:设有一头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使...

2019-08-25 21:49:44 1418

原创 王道课后习题2.3.19:循环单链表删除最小值

题目描述:一个带头结点的循环单链表,反复找出单链表中结点值最小的结点并输出,然后将该节点删除,直到单链表空为止,再删除表头结点。算法思想:核心代码:void del_min(LNode* &L){ LNode *minp,*minpre; LNode *p,*pre; minp=p=L->next; minpre=pre=L; ...

2019-08-25 20:25:44 507

原创 王道课后习题2.3.18:循环单链表合并

题目描述:两个循环单链表,链表头指针h1和h2,将链表h2链接到链表h1之后,要求链接后的链表仍保持循环链表形式。算法思想:<- <- <—r1|h1->1->2->3-|<- <- <—r2|h2->4->5->6|找到r1,r2后r1->next=h2->next;r2->ne...

2019-08-25 20:13:35 228

原创 王道课后习题2.3.16:判断序列B是否是序列A的连续子序列

题目描述:判断序列B是否是序列A的连续子序列(A,B是单链表)算法思想:类似于字符串匹配。核心代码1:int SubSequence(LNode* &La,LNode* &Lb){ LNode* pa=La->next; while(pa!=NULL) { LNode* ra=pa->next; ...

2019-08-25 19:47:33 442 1

原创 王道课后习题2.3.15:求链表A和B的交集

题目描述:两个链表A和B,其元素递增排列,求A和B的交集并存放在A中。算法思想:核心代码:LNode* Public_Element(LNode* &La,LNode* &Lb){ LNode *pa,*pb; pa=La->next; pb=Lb->next; La->next=NULL; LNode ...

2019-08-22 21:54:00 513

空空如也

空空如也

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

TA关注的人

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