数据结构——二叉排序树

给定关键字序列:63, 90, 70, 55, 67, 42, 98, 83, 10, 45, 58 要求:
l.构建二叉排序树
2.对该树中序遍历,显示其序列
3.依次删除10,42,63
4.再次对该树中序遍历,显示其序列
(运用C语言)

1个回答

#include
#include
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int TElemType;
typedef struct BTNode
{
TElemType data;
struct BTNode *lchild,*rchild;
}BTNode,*BTree;
Status SearchBT(BTree T,TElemType key,BTree f,BTree *p);//查找算法
Status InsertBT(BTree *T,TElemType key);//插入算法
Status Delete(BTree *p);//删除数据算法
Status DeleteBT(BTree *T,TElemType key);//删除算法
void InOrderTraverse(BTree T);//中序遍历二叉树
int main(){
int i,x,n;
BTree p;
BTree T = NULL;
int a[11] = {63,90,70,55,67,42,98,83,10,45,58};
for(i=0;i InsertBT(&T,a[i]);
}
while(1)
{
printf("1.中序遍历 2.删除算法 3.添加算法 \n");
scanf("%d",&n);
switch(n) { case 1: printf("中序遍历二叉树\n"); InOrderTraverse(T); printf("\n"); break; case 2: printf("输入要删除的数\n"); scanf("%d",&x); DeleteBT(&T,x); break; case 3: printf("输入要添加的数\n"); scanf("%d",&x); InsertBT(&T,x); } }}Status SearchBT(BTree T,TElemType key,BTree f,BTree *p){ if(!T)//查找不成功 { *p = f; return FALSE; } else if(key == T->data)//查找成功 { *p = T; return TRUE; } else if(key < T->data) { return SearchBT(T->lchild,key,T,p); } else return SearchBT(T->rchild,key,T,p);}Status InsertBT(BTree *T,TElemType key){ BTree p,s; if(!SearchBT(*T,key,NULL,&p)) { s = (BTree)malloc(sizeof(BTNode)); s->data = key; s->lchild = s->rchild = NULL; if(!p) *T = s; else if(key < p->data) p->lchild = s; else p->rchild = s; return TRUE; } else return FALSE;}Status Delete(BTree *p){ BTree q,s; if((*p)->rchild == NULL)//右子树空只需连接它的左子树 { q = *p; *p = (*p)->lchild; free(q); } else if((*p)->lchild == NULL)//左子树空只需连接它的右子树 { q = *p; *p = (*p)->rchild; free(q); } else//左右子树均不空 { q = *p; s = (*p)->lchild; while(s->rchild)//转左,然后向右到尽头 { q = s;s = s->rchild; } (*p)->data = s->data; if(q != *p) q->rchild = s->lchild; else q->lchild = s->lchild; free(s); } return TRUE;}Status DeleteBT(BTree *T,TElemType key){ if(!*T)//要删除的数不存在 return FALSE; else { if(key == (*T)->data) return Delete(T); else if(key < (*T)->data) return DeleteBT(&(*T)->lchild,key); else return DeleteBT(&(*T)->rchild,key); }}void InOrderTraverse(BTree T){ if(T == NULL) return; InOrderTraverse(T->lchild); printf("%d ",T->data); InOrderTraverse(T->rchild);}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
二叉搜索树删除结点时指针问题(邓俊辉数据结构)

新手学习数据结构时遇到了些问题,想请教各位大佬。 在看清华大学邓俊辉网课数据结构 二叉搜索树删除结点时 看到这样一段代码: ``` #define BinNodePosi(T) BinNode<T>*//节点位置 template <typename T> BinNodePosi(T) & BST<T>::search ( const T & e ) { //在BST中查找关键码e if ( !_root || e == _root->data ) { _hot = NULL; return _root; } //在树根v处命中 for ( _hot = _root; ; ) { //自顶而下 BinNodePosi(T) & c = ( e < _hot->data ) ? _hot->lc : _hot->rc; //确定方向 if ( !c || e == c->data ) return c; _hot = c; //命中返回,或者深入一层 } //无论命中或失败,hot均指向v之父亲(或为NULL) } //返回目标节点位置的引用,以便后续插入、删除操作 template <typename T> bool BST<T>::remove ( const T& e ) { //从BST树中删除关键码e BinNodePosi(T) & x = search ( e ); if ( !x ) return false; //确认目标存在(留意_hot的设置) removeAt ( x, _hot ); _size--; //实施删除 updateHeightAbove ( _hot ); //更新_hot及其历代祖先的高度 return true; } //删除成功与否,由返回值指示 template <typename T> static BinNodePosi(T) removeAt ( BinNodePosi(T) & x, BinNodePosi(T) & hot ) { BinNodePosi(T) w = x; //实际被摘除的节点,初值同x BinNodePosi(T) succ = NULL; //实际被删除节点的接替者 if ( !HasLChild ( *x ) ) //若*x的左子树为空,则可 succ = x = x->rc; //直接将*x替换为其右子树 else if ( !HasRChild ( *x ) ) //若右子树为空,则可 succ = x = x->lc; //对称地处理——注意:此时succ != NULL else { //若左右子树均存在,则选择x的直接后继作为实际被摘除节点,为此需要 w = w->succ(); //(在右子树中)找到*x的直接后继*w swap ( x->data, w->data ); //交换*x和*w的数据元素 BinNodePosi(T) u = w->parent; ( ( u == x ) ? u->rc : u->lc ) = succ = w->rc; //隔离节点*w } hot = w->parent; //记录实际被删除节点的父亲 if ( succ ) succ->parent = hot; //并将被删除节点的接替者与hot相联 release ( w->data ); release ( w ); return succ; //释放被摘除节点,返回接替者 } //release()负责释放复杂结构,与算法无直接关系,具体实现详见代码包 ``` 仅讨论第三部分remove_At函数第6行 删除的结点x只有右子树的情况,假设y为x的父节点,并且x是y的右子树,那么第6行只做了x=x->rc仅用子树将其覆盖,为什么不需要将y->rc=x->rc? x的父节点的成员rc,保存的不应该是x的值吗?x变化了,但是y->rc保存的值并没有变吧? 问题大概可以简单概括为,假设y为x右孩子节点(x,y,z为节点指针),z为y右孩子节点。 如果用y=y->rchild,那此时 x->rchild到底变没变? 我的理解是x->rchild应该是原y的值,y被重新赋值后,x->child还是原来的值,没有变。 但这个理解好像错了,请问错在哪?

数据结构——删除线性表节点(线性表)

**已知长度为n (n<20) 的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。(O(1)表示算法的辅助空间为常量)。** 我的代码如下: ``` #include <stdio.h> #define N 20 int main() { int n,a[N],item; printf("请输入n!\t"); scanf("%d",&n); printf("请输入item!\t"); scanf("%d",&item); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) if(a[i]==item) { n=n-1; for(int j=i;j<n;j++) a[j]=a[j+1]; } for(int i=0;i<n-1;i++) printf("%d ",a[i]); printf("%d",a[n]); return 0; } ``` 我又改了一下: ``` #include <stdio.h> #define N 20 int main() { int n,a[N],item; printf("请输入n!\t"); scanf("%d",&n); printf("请输入item!\t"); scanf("%d",&item); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) if(a[i]==item) { n=n-1; a[i]=a[i+1]; } for(int i=0;i<n-1;i++) printf("%d ",a[i]); printf("%d",a[n]); return 0; } ``` 还是不对,求教!该怎么改鸭?

新手求解 数据结构 十进制转八进制 哪个地方错了

#include<stdio.h> #include<stdlib.h> #include<math.h> #include<malloc.h> #include<conio.h> #define OK 1 #define ERROR 1 #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 typedef int SElemType; typedef int Status ; typedef struct { SElemType * base; // 在栈构造之前和销毁之后,base的值为null SElemType * top; // 栈顶指针 int stacksize; // 当前已分配的存储空间,以元素为单位 }SqStack; Status InitStack (SqStack &S){ //构造空栈S if(!S.base) exit (OVERFLOW);//存储分配失败 S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK; }//InitSTACK Status Push ( SqStack &S, SElemType e){ //插入元素e为新的栈顶元素 if(S.top - S.base >= S.stacksize){//判断是否栈满,栈满,追加存储空间 S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof (SElemType)); if(!S.base)exit (OVERFLOW);//存储分配失败 S.top = S.base + S.stacksize ; S.stacksize += STACKINCREMENT; } *S.top++ = e; return OK; }//Push int StackEmpty(SqStack S) { // 查看栈是否为空 if(S.top == S.base) exit(OVERFLOW); else return 1; }//Empty Status Pop( SqStack &S , SElemType &e){ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR if(S.top == S.base) return 1; e = *--S.top; return OK; }//Pop void conversion() {//将十进制转化为八进制 SqStack S; int N; int e; InitStack(S); printf("输入N的值:"); scanf("%d",&N); printf("转换后的值:"); while(N) { Push(S,N%8); N=N/8; } while(StackEmpty(S)) { Pop(S,e); printf("%d\n",e); } } int main() { conversion(); getch(); return 0; }

----- ——————插入排序——————--------

题目描述 有依次排列的一列数a1,a2,a3,…,an-1,an。你可以随便把一个数拿出,插到最前面(当前第1个数a1前)、最后面(当前最后一个数an后面)、或者剩余数列中任意的相邻两个数之间。 比如起始数依次为4 5 6 7 8 9。如果把第4个数a4=7拿出,然后任意放回,可能有 7 4 5 6 8 9 4 7 5 6 8 9 4 5 7 6 8 9 4 5 6 7 8 9 4 5 6 8 7 9 4 5 6 8 9 7 这6种排列。 已知把第i个数ai拿出后插回去花费的代价为该数的值ai。小猪希望花费最少的代价来把这个数列排成不降序列。所谓不降序列,是指对于数列中任意两个数,排在前面的数小于等于排在后面的数。 输入 输入文件insert.in的第一行只有一个整数n,表示共有n个整数。 第2行有n个整数(互相之间以一个空格分隔),表示待排序的n个数。 输出 输出文件insert.out中只有一行,该行只有一个整数,表示花费的最小代价。 样例输入 Copy 4 7 1 2 3 样例输出 Copy 6 提示 【样例说明】 很显然移动7是不划算的。一种移动方法是: 初始情况:7 1 2 3 => (把3移到最前面得) 3 7 1 2 => (把1移到最前面得) 1 3 7 2 => (把2移到1与3之间得) 1 2 3 7 最终整个序列成为升序。 消耗的代价是3 + 1 + 2 = 6。 【数据规模】 30%的数据初始数列是1至n的一个排列,即1至n都在初始数列出现且仅出现一次; 20%的数据,1≤n≤10; 90%的数据,1≤n≤1000; 100%的数据,1≤n≤100000,初始数列的每个数在1和20000之间(包括1和20000)。 【提示】 不需要移动的数之间符合什么规律呢?

数据结构——KMP算法 else k=next[k];**//k=next[k]可以改为k=-1吗?——虽然改了之后程序运行结果一样,但不知道可不可以这样改?**

``` void GetNext(SqString t,int next[]) //由模式串t求出next值 { int j,k; j=0;k=-1;next[0]=-1; while (j<t.length-1) { if (k==-1 || t.data[j]==t.data[k]) //k为-1或比较的字符相等时 { j++;k++; next[j]=k; } else k=next[k];**//k=next[k]可以改为k=-1吗?——虽然改了之后程序运行结果一样,但不知道可不可以这样改?** } } ``` ``` ``` ``` ```

数据结构——括号匹配(栈和队列)

假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。 **我的代码如下:** ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 21 typedef struct { int top; DataType data; }qstack; //初始化为栈空 void InitStack(qstack *s) { s->top=-1; } //判空 int StackEmpty(qstack *s) { return s->top==-1; } //入栈 void Push (qstack *s,DataType x) { s->top++; s->data[s->top]=x; } //出栈 前判空 DataType Pop (qstack *s) { DataType x;//存放出栈元素 if(StackEmpty(s)) printf("Stack underflow!") x=s->date[s->top]; s->top--; return x; } //匹配 int Match(ElemType e,ElemType ch) { if(e == '('&&ch == ')') { return 1; } else if(e == '['&&ch == ']') { return 1; } else if(e == '{'&&ch == '}') { return 1; } else { return 0; } } //判断 int main() { char str[N]; qstack *s; InitStack(s); scanf("%s",str); for(int i=0;;i++) { switch(str[i]) case "(": case "[": case "{":Push(s,str[i]); break; case ")": case "]": case "}":if(StackEmpty(s)) printf("NO"); else if(Match(str[i-1],str[i])) Pop(s,str[i]); break; default:break; } if(StackEmpty(s)) printf("YES"); return 0; } ``` 麻烦大佬帮我调试一下,全是基础问题,刚接触,谢谢各位大大!

C语言编程题目——实现排序

# 详细代码 编写函数 void sort(int *p,int n),功能:对 p 开始的 n 个数从大到小排 序。

C语言编程题目——部分排序

# 详细代码 编写函数 int *inverse(int *p,int n),功能:对 p 开始的 n 个整数逆序 并保存在 p 开始的地址中。

数据结构课程设计完整源代码 用C语言编写

1.按照测验的规则安排座位: (1)一个教室有m行n列个座位,两个班合堂,学生数分别为x、y,学生学号顺次编号。(2)排座位规则:一列单号一列双号,都是按照学号顺次排列;先排一班再排二班。要求:(1)输出每一个座位上学生学号和姓名; (2)按照学号查一个学生的座位; (3)按照姓名查一个学生的座位。

数据结构之ZOJ——Exploding CPU

Problem Description The well known hardware manufacturing company Processors for Professors is about to release a highly specialized CPU with exceptional functionality in, amongst other areas, number theory. It has, for example, an instruction PFACT that takes one parameter and returns all prime factors of that parameter, with an outstanding execution speed. It has, however, one considerable problem. The scientists at the testing lab has just found out that the PFACT instruction for some special input values freaks out and makes the entire processor explode. Even though this could be an amusing effect, it is not the way it was intended to work. The skilled mathematicians have, by trial and error, found that the explosive numbers all share the same interesting number theoretic properties, which might be of help when troubleshooting. An explosive number is a number where all s are distinct prime numbers such that . A and B are always integers, and might be different for different explosive numbers. For example, the processor will explode when factorizing the number 4505, because 4505 = 1*5*17*53 and 5 = 3*1+2, 17 = 3*5+2 and 53 = 3*17+2 and the numbers 5, 17 and 53 are all prime numbers. In this case A = 3 and B = 2. You are kindly asked to write a computer program that will aid this company in estimating the impact of the errors, by calculating the amount of explosive numbers that exists within a given range of integers. Input The input starts with a row containing the number 0 <= N <= 100 of test cases that will follow. For each test case, there will be one row containing two integers, separated by a single space. These numbers are such that . Output For each test case, output the number of explosive numbers that exist in the range . Sample Input 2 4505 4505 0 5000 Sample Output 1 5

数据结构课程设计——“****学院期末考试安排”

第一次做关于数据结构的课程设计,实在没思路,不知道该用什么存储结构来存储信息?

听说这里牛人多,对这个不知道大家是怎么做的

有这样的一个需求, <br />通过一个xml文件定义页面上要生成的元素,比如 按钮,下拉列表等等, <br />而页面则自动根据xml 文件中定义的元素来生成相应的界面内容, <br />问题是: <br />比如按钮的位置,大小,上面的文字内容以及样式,本身的样式,事件等等 <br />这些东西太多,如何比较好的在xml中定义 <br />小弟我想了好久,基本没什么头绪,所以来这里请教了,还望大家多多指导<br /><strong>问题补充</strong><br />zk? taglib? <br />本人入行不久,tablig还知道点,zk就不清楚了,还请楼上的说的详细些 <br />比如: <br />我在xml文件中定义了一个button,一个下拉列表(它们的位置 和样式等) <br />页面根据这个xml文件 自动生成一个button 和一个下拉列表,样式和位置生成什么都是根据 <br />这个xml文件定义的 <br /><br /><strong>问题补充</strong><br />我查了下,zk是一个ajax框架,但不是这样 <br />我基本所有的页面元素都在xml文件中定义好了,这个xml文件实际就是一个页面模板 <br />它存放了所有页面要显示的元素<br /><strong>问题补充</strong><br /><div class="quote_title">rainerWJY 写道</div><div class="quote_div">直接用swing映射html.</div><br />直接用swing映射html应该不行 <br /> <br />html还算熟悉 dom 就一般了, <br />详细的我还没想好,但是页面上要显示的html元素 都要在xml文件中定义好 <br />就是没什么思路,不知道xml文件中该如何来定义, <br />因为html元素种类多,属性多,页面可能还有嵌套的元素,所以比较麻烦感觉<br /><strong>问题补充</strong><br /><div class="quote_title">bloodrate 写道</div><div class="quote_div">用taglib好,否则你可能要在每次调用展现层的时候都传大量乱七八糟的数据和业务数据搅和在一起...</div><br />你说的也是, <br />但使用标签的话,达不到自动生成的页面的效果 <br />而且我比如要去掉一个button 直接修改xml文件就可以了,不用去jsp页面上进行修改 <br /><strong>问题补充</strong><br /><div class="quote_title">rainerWJY 写道</div><div class="quote_div"><div class="quote_title">seety 写道</div><div class="quote_div"><div class="quote_title">rainerWJY 写道</div><div class="quote_div">直接用swing映射html.</div> <br />直接用swing映射html应该不行 <br /> <br />html还算熟悉 dom 就一般了, <br />详细的我还没想好,但是页面上要显示的html元素 都要在xml文件中定义好 <br />就是没什么思路,不知道xml文件中该如何来定义, <br />因为html元素种类多,属性多,页面可能还有嵌套的元素,所以比较麻烦感觉</div> <br /> <br /> <br />这个问题我是思考过的。 <br />1.这个思路很多人都能想的到。如果有这样的好的解决方案,我相信swing会很火。 <br />2.没有,替代是什么?或许是flex。不过我没什么研究 <br />3.html解析+渲染这个还是交给浏览器去做吧。他们就做这个的。 <br />4.简单的实用性不强,不简单的一个人做不来。。。</div> <br /> <br /> <br />其实我也觉得有点难度,所以跑到这里来了,集思广益, <br />弄个还算过的去的就可以了,以后有心思路了再改进 <br />

if (cin >> (int)类型) 与 if (cin >> (string)类型)

题目只是个例子 1044 火星数字(20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret。 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。 火星人将进位以后的 12 个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。 例如地球人的数字 29 翻译成火星文就是 hel mar;而火星文 elo nov 对应地球数字 115。为了方便交流,请你编写程序实现地球和火星数字之间的互译。 输入格式: 输入第一行给出一个正整数 N(<100),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。 输出格式: 对应输入的每一行,在一行中输出翻译后的另一种语言的数字。 输入样例: 4 29 5 elo nov tam 受到while (cin >> s)这种写法的启发,想问这种写法可以么 ``` int main() { int a; string s; if (cin >> a) { //将地球数字转化成火星文 } if (cin >> s) { //将火星文转化成地球数字 } } ```

哈夫曼算法——数据结构课程设计

假设某文本文档只包含26个英文字母,应用哈夫曼算法对该文档进行压缩和解压缩操作,使得该文档占用较少的存储空间

C++——排序与查找C++程序

排序与查找 1、利用前面学习的随机数函数,自动生成10个1~100之间不重复的正整数,并存入一个数组中。 2、写一个插入排序函数,对上述存入数组的数排序,并输出排序结果。 3、写一个折半查找(二分查找)函数,在排完序后的数组上进行数据查找,并显示查找结果。

求个数据结构课程设计的程序

图书管理基本业务模拟 问题描述: 图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。要求设计一个图书管理信息系统,用计算机模拟实现上述系统功能。 基本要求: (1)书的登记内容包括书号、书名、著作者、现存量和库存量等;学生信息包括借书证号、借阅信息等; (2)以书号建立索引表(线性表)以提高查找效率; (3)主要功能如下: a) 采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; b) 借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书号和归还期限,改变现存量; c) 归还:注销对借阅者的登记,改变该书的现存量。 (4)输出形式: 能按书号、书名、著作者查找库存的书籍信息 能按学生的借书证号显示学生信息和借阅信息 书籍入库 借书功能实现 还书功能实现 最好不要和百度直接搜到的程序一样,万分感谢

数据结构中用链栈的方式实现表达式求值

如果定义两个结构体函数中的自定义变量不一样该怎么办呀?麻烦大神帮我解答一下!

java版 数据结构课程设计 通讯录的制作

A.通讯录的制作 要求每条信息至包含姓名(name )城市(city)电话(tel)QQ号(qq),完成如下功能: (1) 输入信息—— enter(); (2) 显示信息——display( ); (3) 查找以姓名作为关键字 ——search( ); (4) 删除信息——delete( ); (5) 存盘(将数据保存在文件或者数据库中)——save ( );

c语言 判断二叉树是否为完全二叉树

新手渣渣 请教各位大神 问题出在哪 谢谢 #include <stdio.h> #include <stdlib.h> #define TRUE  1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef char TElemType; typedef int Status; typedef struct BiTNode{ TElemType data2; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; typedef struct QNode { BiTree data1;           struct QNode *next; }QNode,*QueuePtr; typedef struct  { QueuePtr front;   //队头指针 QueuePtr rear;    //队尾指针  }LinkQueue; Status InitQueue(LinkQueue *Q);             //关于队列的函数声明  Status EnQueue(LinkQueue *Q,BiTree e); Status DeQueue(LinkQueue *Q,BiTree *e); Status QueueEmpty(LinkQueue Q); Status InitBiTree(BiTree *T);               //关于二叉树的函数声明  Status CreateBiTree(BiTree *T);   //啥意思啊 那个defination  Status InOrderTraverse(BiTree T); int Check(BiTree T); Status InitQueue(LinkQueue *Q)    { Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q->front) exit(OVERFLOW); Q->front->next=NULL; return OK;  }  Status EnQueue(LinkQueue *Q,BiTree e)    { QNode *p; p=(QueuePtr)malloc(sizeof(QNode));    if(!p) exit(OVERFLOW); p->data1->data2=e->data2; p->data1->lchild=e->lchild; p->data1->rchild=e->rchild; p->next=NULL; Q->rear->next=p;     Q->rear=p;          return OK;  }  Status DeQueue(LinkQueue *Q,BiTree *e)   { if(Q->front==Q->rear) return ERROR; QNode *p; p=Q->front->next; (*e)->data2=p->data1->data2; (*e)->lchild=p->data1->lchild; (*e)->rchild=p->data1->rchild; Q->front->next=p->next; if(Q->rear==p)           Q->rear=Q->front;   free(p); return OK; }  Status QueueEmpty(LinkQueue Q)    { if(Q.front==Q.rear) return TRUE; else return FALSE; }  Status InitBiTree(BiTree *T)      { *T=NULL; return OK; }   Status CreateBiTree(BiTree *T)      { char ch; scanf("%c",&ch); if(ch=='*') { *T=NULL; } else { *T=(BiTree)malloc(sizeof(BiTNode)); (*T)->data2=ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } return OK; } Status InOrderTraverse(BiTree T)    { if(T==NULL) return 0; else { InOrderTraverse(T->lchild); printf("%c",T->data2); InOrderTraverse(T->rchild); } return OK; } int Check(BiTree T)     { BiTree S; LinkQueue Q; int flag=0; if(T) { InitQueue(&Q); EnQueue(&Q,T);             while(!(QueueEmpty(Q)))    { DeQueue(&Q,&S);       if(!S) {       flag=1; } else  { if(flag) return 0; else { EnQueue(&Q,(S->lchild)); EnQueue(&Q,(S->rchild)); } } } } printf("\n"); return 1; } int main() { BiTree T; int n; InitBiTree(&T); CreateBiTree(&T); printf("\n中序遍历二叉树:"); InOrderTraverse(T); n=Check(T); printf("判断是否为完全二叉树 1-是 0-否:%d\n",n); return 0; }

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

广工操作系统课程设计(文档+代码+可执行文件)

实现作业调度(先来先服务)、进程调度功能(时间片轮转) 实现内存管理功能(连续分配)。 实现文件系统功能(选作) 这些功能要有机地连接起来

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

apache-jmeter-5.1.1(Requires Java 8+).zip

。Apache JMeter 5.1.1 (Requires Java 8+),需要jdk8以上的版本。

数通HCNP中文理论全套教材.rar

内涵HCNP-IENP中文理论书-内文,

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

DDR5_Draft_Spec_Rev05c.pdf

DDR5 spec

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c# 不能序列化继承类 c# char* 调用 c# 开发dll模板 c#添加控件到工具箱 c#控制台组合数 编程计算猴子吃桃问题c# c# wpf 背景透明 随机抽取号码软件c# c# 开发环境 c# 属性和字段
立即提问