目录
- 正式开始打代码前的一些小知识
- 代码部分
- 打代码时发现的关于BiTNode和BiTree一些注意点(其实很简单但好久才想明白
正式开始打代码前的一些小知识
辅助队列
#mermaid-svg-zX5ya27mMGUTGFTq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .error-icon{fill:#552222;}#mermaid-svg-zX5ya27mMGUTGFTq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zX5ya27mMGUTGFTq .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-zX5ya27mMGUTGFTq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zX5ya27mMGUTGFTq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zX5ya27mMGUTGFTq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zX5ya27mMGUTGFTq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zX5ya27mMGUTGFTq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zX5ya27mMGUTGFTq .marker.cross{stroke:#333333;}#mermaid-svg-zX5ya27mMGUTGFTq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zX5ya27mMGUTGFTq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .cluster-label text{fill:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .cluster-label span{color:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .label text,#mermaid-svg-zX5ya27mMGUTGFTq span{fill:#333;color:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .node rect,#mermaid-svg-zX5ya27mMGUTGFTq .node circle,#mermaid-svg-zX5ya27mMGUTGFTq .node ellipse,#mermaid-svg-zX5ya27mMGUTGFTq .node polygon,#mermaid-svg-zX5ya27mMGUTGFTq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zX5ya27mMGUTGFTq .node .label{text-align:center;}#mermaid-svg-zX5ya27mMGUTGFTq .node.clickable{cursor:pointer;}#mermaid-svg-zX5ya27mMGUTGFTq .arrowheadPath{fill:#333333;}#mermaid-svg-zX5ya27mMGUTGFTq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zX5ya27mMGUTGFTq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zX5ya27mMGUTGFTq .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-zX5ya27mMGUTGFTq .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-zX5ya27mMGUTGFTq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zX5ya27mMGUTGFTq .cluster text{fill:#333;}#mermaid-svg-zX5ya27mMGUTGFTq .cluster span{color:#333;}#mermaid-svg-zX5ya27mMGUTGFTq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zX5ya27mMGUTGFTq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
lchild=B,A,rcild=C
lchild=NULL,C,rcild=NULL
lchild=NULL,B,rcild=NULL
辅助队列如下
#mermaid-svg-5kR6AHcj3cNaFRWR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .error-icon{fill:#552222;}#mermaid-svg-5kR6AHcj3cNaFRWR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5kR6AHcj3cNaFRWR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5kR6AHcj3cNaFRWR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5kR6AHcj3cNaFRWR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5kR6AHcj3cNaFRWR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5kR6AHcj3cNaFRWR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5kR6AHcj3cNaFRWR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5kR6AHcj3cNaFRWR .marker.cross{stroke:#333333;}#mermaid-svg-5kR6AHcj3cNaFRWR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5kR6AHcj3cNaFRWR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .cluster-label text{fill:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .cluster-label span{color:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .label text,#mermaid-svg-5kR6AHcj3cNaFRWR span{fill:#333;color:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .node rect,#mermaid-svg-5kR6AHcj3cNaFRWR .node circle,#mermaid-svg-5kR6AHcj3cNaFRWR .node ellipse,#mermaid-svg-5kR6AHcj3cNaFRWR .node polygon,#mermaid-svg-5kR6AHcj3cNaFRWR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5kR6AHcj3cNaFRWR .node .label{text-align:center;}#mermaid-svg-5kR6AHcj3cNaFRWR .node.clickable{cursor:pointer;}#mermaid-svg-5kR6AHcj3cNaFRWR .arrowheadPath{fill:#333333;}#mermaid-svg-5kR6AHcj3cNaFRWR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5kR6AHcj3cNaFRWR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5kR6AHcj3cNaFRWR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5kR6AHcj3cNaFRWR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5kR6AHcj3cNaFRWR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5kR6AHcj3cNaFRWR .cluster text{fill:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR .cluster span{color:#333;}#mermaid-svg-5kR6AHcj3cNaFRWR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5kR6AHcj3cNaFRWR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
A
B
C
phead
Ptail
此时判断得知A的左右子树已满,因此将A出队,辅助队列如下
#mermaid-svg-cosgmAY2ycfYqNCB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .error-icon{fill:#552222;}#mermaid-svg-cosgmAY2ycfYqNCB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cosgmAY2ycfYqNCB .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-cosgmAY2ycfYqNCB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cosgmAY2ycfYqNCB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cosgmAY2ycfYqNCB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cosgmAY2ycfYqNCB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cosgmAY2ycfYqNCB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cosgmAY2ycfYqNCB .marker.cross{stroke:#333333;}#mermaid-svg-cosgmAY2ycfYqNCB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cosgmAY2ycfYqNCB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .cluster-label text{fill:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .cluster-label span{color:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .label text,#mermaid-svg-cosgmAY2ycfYqNCB span{fill:#333;color:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .node rect,#mermaid-svg-cosgmAY2ycfYqNCB .node circle,#mermaid-svg-cosgmAY2ycfYqNCB .node ellipse,#mermaid-svg-cosgmAY2ycfYqNCB .node polygon,#mermaid-svg-cosgmAY2ycfYqNCB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cosgmAY2ycfYqNCB .node .label{text-align:center;}#mermaid-svg-cosgmAY2ycfYqNCB .node.clickable{cursor:pointer;}#mermaid-svg-cosgmAY2ycfYqNCB .arrowheadPath{fill:#333333;}#mermaid-svg-cosgmAY2ycfYqNCB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cosgmAY2ycfYqNCB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cosgmAY2ycfYqNCB .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-cosgmAY2ycfYqNCB .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-cosgmAY2ycfYqNCB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cosgmAY2ycfYqNCB .cluster text{fill:#333;}#mermaid-svg-cosgmAY2ycfYqNCB .cluster span{color:#333;}#mermaid-svg-cosgmAY2ycfYqNCB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cosgmAY2ycfYqNCB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
B
C
phead
Ptail
继续插入元素D时,查询辅助队列得知队首为B,检查B得知左子树为NULL
,将D作为B的左子树插入。辅助队列如下
#mermaid-svg-wdW0mmge6mlYHses {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wdW0mmge6mlYHses .error-icon{fill:#552222;}#mermaid-svg-wdW0mmge6mlYHses .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wdW0mmge6mlYHses .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-wdW0mmge6mlYHses .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wdW0mmge6mlYHses .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wdW0mmge6mlYHses .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wdW0mmge6mlYHses .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wdW0mmge6mlYHses .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wdW0mmge6mlYHses .marker.cross{stroke:#333333;}#mermaid-svg-wdW0mmge6mlYHses svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wdW0mmge6mlYHses .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wdW0mmge6mlYHses .cluster-label text{fill:#333;}#mermaid-svg-wdW0mmge6mlYHses .cluster-label span{color:#333;}#mermaid-svg-wdW0mmge6mlYHses .label text,#mermaid-svg-wdW0mmge6mlYHses span{fill:#333;color:#333;}#mermaid-svg-wdW0mmge6mlYHses .node rect,#mermaid-svg-wdW0mmge6mlYHses .node circle,#mermaid-svg-wdW0mmge6mlYHses .node ellipse,#mermaid-svg-wdW0mmge6mlYHses .node polygon,#mermaid-svg-wdW0mmge6mlYHses .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wdW0mmge6mlYHses .node .label{text-align:center;}#mermaid-svg-wdW0mmge6mlYHses .node.clickable{cursor:pointer;}#mermaid-svg-wdW0mmge6mlYHses .arrowheadPath{fill:#333333;}#mermaid-svg-wdW0mmge6mlYHses .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wdW0mmge6mlYHses .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wdW0mmge6mlYHses .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-wdW0mmge6mlYHses .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-wdW0mmge6mlYHses .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wdW0mmge6mlYHses .cluster text{fill:#333;}#mermaid-svg-wdW0mmge6mlYHses .cluster span{color:#333;}#mermaid-svg-wdW0mmge6mlYHses div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wdW0mmge6mlYHses :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
B
C
F
phead
Ptail
calloc和malloc
calloc同样是申请空间的函数,和malloc的区别在于,calloc申请的空间内容会全部赋0。
对于二叉树的新建,每插入一个结点就需要将左右孩子的值赋为NULL,而使用calloc时就可以省略这一步。
calloc()的函数声明
void *calloc(size_t nitems, size_t size)
//nitems -- 要被分配的元素个数。
//size --*斜体样式* 元素的大小。
代码部分
结构体
typedef char ElemType;
//二叉树的数据结构
typedef struct BiTNode{ElemType data;struct BiTNode* lchild;struct BiTNode* rchild;
}BiTNode, *BiTree;//用于辅助队列标记
typedef struct tag {BiTree p;struct tag* pnext;
}tag_t,*ptag_t;
二叉树建树
我调试了一下,简单的输入没有什么问题(看完王道的课自己试着写的)
//新建树BiTree tree = NULL;//树根//新结点BiTree pnew;//结点数据ElemType newdata;ptag_t phead = NULL, ptail = NULL, pcur;//phead指向队头,ptail指向队尾,pcur指向当前需要操作的结点ptag_t listpnew;//listpnew指向新入队的结点//输入一串字符,以回车作为结束while (scanf("%c", &newdata) != EOF){//回车,跳出循环if (newdata == '\n'){break;}//新的结点pnewpnew = (BiTNode*)calloc(1, sizeof(BiTNode));pnew->data = newdata;//新的入队结点listpnewlistpnew = (ptag_t)calloc(1, sizeof(tag_t));listpnew->p = pnew;//树为空if (tree==NULL){phead = listpnew;ptail = listpnew;//pcur = listpnew;tree = pnew;continue;}else{ptail->pnext = listpnew;ptail = ptail->pnext;//pcur = ptail;}//首先确认队头结点的左右孩子是否已满,已满则出队if (phead->p->lchild != NULL && phead->p->rchild != NULL){phead = phead->pnext;}//左孩子为空,则先将新结点放入队头结点的左孩子if (phead->p->lchild == NULL){phead->p->lchild = pnew;}//否则放入右孩子else if (phead->p->rchild == NULL){phead->p->rchild = pnew;}}
与王道的代码做对比
//读取字符串abcdefghij,然后层次建树建立一颗二叉树,然后前序遍历输出abdhiejcfg,注意不要打印前序遍历几个汉字
//思路:层次遍历创建二叉树,用队列记录节点(该节点是否有左右孩子)#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
//二叉数的结构体,用链表实现
typedef char ElemType;
typedef struct BiTNode
{ElemType data;struct BiTNode* lchild, * rchild;//左右孩子指针
}BiTNode, * BiTree;//二叉树的节点,二叉树本树//记录节点的链队,若节点的左右孩子不为空,则出队
typedef struct label
{BiTree p;//树的某一个结点的地址值struct label* pnext;
}label, * Label;//链队节点,链队int main()
{BiTree pnew;//树的新节点BiTree tree = NULL;//树根为空//层次遍历的辅助队列Label phead = NULL, ptail = NULL;//phead就是队列头,ptail就是队列尾Label listpnew;//链队的新节点Label pcur = NULL;//listpnew是队列的新节点 pcur是树的当前节点ElemType c;while (scanf("%c", &c) != EOF){if (c == '\n'){break;}pnew = (BiTree)calloc(1, sizeof(BiTNode));//calloc申请空间并对空间进行初始化pnew->data = c;//数据放进去listpnew = (Label)calloc(1, sizeof(Label));//给队列结点申请空间listpnew->p = pnew;//赋值if (NULL == tree)//树根为空{tree = pnew;//树的根phead = listpnew;//队列头ptail = listpnew;//队列尾pcur = listpnew;continue;//跳出本次循环}else {ptail->pnext = listpnew;//新结点放入链表,通过尾插法//尾插法入队ptail = listpnew;//ptail指向队列尾部}//pcur始终指向要插入的结点的位置if (NULL == pcur->p->lchild)//如何把新结点放入树{pcur->p->lchild = pnew;//把新结点放到要插入结点的左边}else if (NULL == pcur->p->rchild){pcur->p->rchild = pnew;//把新结点放到要插入结点的右边pcur = pcur->pnext;//左右都放了结点后,pcur指向队列的下一个}}
}
看了一下王道的代码,和我写的区别在于pcur:
可能是听课的时候没太明白pcur具体是什么,我写的时候将队列中队头左右子树已满的元素直接出队,也就是phead指向下一个结点;
王道的代码则是phead一直指向根结点,用pcur来表示当前左右子树未满还可以插入的结点。
看我的代码我是将pcur理解成了新插入的结点,所以没用到pcur。
思考了一下还是有pcur比较合理并且完整,可以保留下完整的插入结点,如果之后还需要用到所有结点的话会更方便。
打代码时发现的关于BiTNode和BiTree一些注意点(其实很简单但好久才想明白
我写了这样一句代码
pnew = (BiTNode*)calloc(1, sizeof(BiTree));
是一句错的代码,正确写法应该是
pnew = (BiTNode*)calloc(1, sizeof(BiTNode));
之前写类似空间申请时一般都会写对,但一直没仔细注意过这个点,在写二叉树层次建树这部分时不小心就写错了,后来运行代码一直不对,还以为是我对calloc()函数理解错了
我在这段纠结的时间完全确认了一下一点(其实是基础但是我一直没放心上):
对于
typedef struct BiTNode{ElemType data;struct BiTNode* lchild;struct BiTNode* rchild;
}BiTNode, *BiTree;
sizeof(BiTNode) = 12
sizeof(BiTNode*) = 4
sizeof(BiTree) = 4
原因在于BiTNode*和BiTree只是指针!!
【代码 C/C++】二叉树层次建树相关推荐
- 数据结构-二叉树(包含二叉树的层次建树、前中后序遍历、层次遍历解析及代码)
目录 一.树与二叉树的原理解析 1.树的定义 2.树的结构和特点 3.二叉树的定义 4.树结点的数据结构 二.二叉树的层次建树 1.二叉树层次建树的原理及分析 2.完整代码 三.二叉树的前中后序遍历 ...
- C++ 二叉树的层次建树及其遍历
总结归纳 先序遍历:根左右:中序遍历:左根右:后序遍历:左右根. 若选取层次建树,则需要一个链式队列辅助实现 (规定,不必问为什么) .若选取层次遍历,也需要一个链式队列辅助实现. 该辅助队列的具体操 ...
- 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)
下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...
- C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历)
C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历) tips:前些天学习了C语言数据结构链表,栈,队列.今天来学习一下C语言数据结构之二叉树的各种操作. 注意:二叉树的层次建树是 ...
- 数据结构-二叉树层次遍历
首先介绍下二叉树的层次遍历即按照顺序对树节点依次访问,如下图: 顺序遍历的结果为:ABCDEFGHIJK 我们可以借助一个队列来实现二叉树的层次遍历:思路如下: 先将二叉树根节点入队,然后出队,访问该 ...
- 数据结构---------层次建树(完全二叉树)
从头来过----- 层次建树(完全二叉树) 层次建树 准备工作(树 是逻辑结构) 层次建树需要树结点,还需要一个队列帮忙存储.标识.增添.移动 树结点 每个树结点,都需要一个地方存储元素,并且有一个左 ...
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)
目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...
- 【Golang 面试算法二叉树 手动建树】
Golang 面试算法二叉树 手动建树 前言 代码实现 前言 面试中有很多有关二叉树的题目,且需要手动建树,这里记录一下如何用Golang来快速构建一个二叉树. 代码实现 我们知道二叉树可以扁平化到数 ...
- 树(二叉树层次遍历输出及二叉树前序遍历输入)
前两篇解释了二叉树的有关逻辑概念及前中后序输出递归代码的实现,这篇将讲述二叉树层次遍历输出如何实现以及二叉树前序遍历输入的两种情况. 定义结构体 struct BiNode{char data;BiN ...
最新文章
- 深度学习 Neural Style 之TensorFlow实践
- vlc web 登录账号_怎么在web网页端解绑敬业签绑定的手机号?
- [Objective-C] Copy 和 MutableCopy
- google +按钮_如何禁用或改善Google的Google+集成
- 东南亚再造天猫 Lazada品牌商城LazMall举办第二届品牌未来论坛
- (王道408考研数据结构)第四章串-第一节:串的定义和基本操作及存储结构
- Hbase+Phoenix+Mybatis+Springboot整合查询数据
- Linux Shell基础 Shell的输入重定向和输出重定向
- 145. PHP header status code
- 多相流体力学类毕业论文文献包含哪些?
- 【云游戏】云游戏的架构设计和技术实现
- 与报文交换比较,分组交换有哪些优点?
- 基于SSM框架的网上购物送货系统
- Android Beacon开发
- 简单的一个百度注册界面
- 25 Nacos实战:灰度配置如何实现?
- 计算机网络p2p应用,[计算机网络-应用层] P2P应用
- windows powershell/cmd更改字体
- 理财投资 之 基金投资 - #1篇:基金基础知识扫盲
- Combining Word and Entity Embeddings for Entity Linking
热门文章
- 一、C语言概述(易懂易学习,附代码案例)
- Description	Resource	Path	Location	Type Java compiler level does not match the version of the instal
- vue3中使用百度地图BMAP
- 【Python】常用模块(三)——collections模块中的几个常用方法详解
- 打Oracle PSU时碰到的一些问题处理
- 白嫖党最爱!java电话面试作弊
- logit回归模型假设_一文读懂条件Logistic回归
- iOS KVO和KVC
- 几种DOS下实用的MP3播放器的介绍http://lason.bokee.com/5967848.html
- 【坐在马桶上看算法】算法4:队列――解密QQ号