满二叉树的前序遍历 //二叉树的结构定义 typedef struct csNode { char data; struct csNode*lchild; struct csNode*rchild; } Csnode,*tree; //二叉树的建立 void CreatTree(tree *T) { char ch; cin>>ch; if(ch=='#') *T=NULL; else { *T=new Csnode; if(!T) return; (*T)->data=ch; printf("请输入%c的左子树: ",ch); CreatTree(&(*T)->lchild); printf("请输入%c的右子树: ",ch); CreatTree(&(*T)->rchild); } } //前序遍历算法 void PreCreat(tree T) { if(T==NULL) return ; cout<data<<" "; PreCreat(T->lchild);
2022-12-16 09:15:06 14KB 数据结构
1
用栈求解n皇后问题 #include #include //共用全局变量数据初始化, int place[8]={0}; bool flag[8]={1,1,1,1,1,1,1,1};//已放置列的坐标 bool col1[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//已放置皇后的上对角线 bool col2[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//已放置皇后的下对角线 int number=0; //递归回溯函数 void general(int n); //打印函数 void print(); int main(){ general(0); printf("\n共有%d种摆放方式",number); return 0; } void general(int n){ int col; for(col=0;col<8;col++){ if(flag[col]&&col1[n-col+7]&&col2[n+col]){ place[n]=col;
2022-12-16 09:15:05 12KB 数据结构
1
满二叉树的前序遍历 if(T==NULL) return ; MidCreat(T->lchild); cout<data<<" "; MidCreat(T->rchild); } //后序遍历算法 void RearCreat(tree T) { if(T==NULL) return ; RearCreat(T->lchild); RearCreat(T->rchild); cout<data<<" "; } int main() { printf("请输入第一个节点的数据:\n"); tree T; CreatTree(&T); cout<<"前序遍历:"; PreCreat(T); cout<<"\n中序遍历:"; MidCreat(T) ; cout<<"\n后序遍历:"; RearCreat(T) ; }
2022-12-16 09:15:04 11KB 数据结构
1
邻接矩阵存储图的深度优先遍历 邻接矩阵表示的无向图遍历实现。 #include using namespace std; #define MAX_SIZE 100//最大顶点数 。 #define MAX_INT 326564//表示极大值,即 ∞ 。 typedef char Elemtype_A;//定义顶点的数据类型为字符型 。 typedef int Elemtype_S;//定义边的权值为整型 。 /*深度优先遍历(DFS) 方法: (1)在访问图中某一起始顶点 ν后,由 v出发,访问它的任一邻接顶点 w; (2)再从 W,出发,访问与 w,邻接但还未被访问过的顶点 Mzi (3)然后再从 Wz出发,进行类似的访问,.. (4)如此进行下去,直至到达所有的邻接顶点都被访问过的顶点u为止。 (5)接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被 访问的邻接顶点。 如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的 访问; 如果没有,就再退回一步进行搜索。重复上述过程,直到连通图中 所有顶点都被访问过为止。*/ //1.邻接矩阵的
2022-12-16 09:15:04 12KB 数据结构
1
18923 二叉树的直径 typedef struct treenode { int pn;//双亲结点所在下标 int lchild=0;//左孩子 int rchild=0;//右孩子 int maxlen=1;//以该结点为根节点的子树的深度 } Tree; Tree t[10005]; //A用于按输入顺序存储结点 int A[10005]; int main() { int Ans=0,j=0; int n; cin>>n; For(i,1,n) { int p,c; cin>>p>>c; if(i==1) A[j++]=p; if(!t[p].lchild)//p的左孩子为空 { t[c].pn=p; t[p].lchild=c; } else { t[c].pn=p;
2022-12-16 09:15:03 11KB 数据结构
1
前言 本篇章主要介绍哈夫曼树及哈夫曼编码,包括哈夫曼树的一些基本概念、构造、代码实现以及哈夫曼编码,并用Python实现。 1. 基本概念 哈夫曼树(Huffman(Huffman(Huffman Tree)Tree)Tree),又称为最优二叉树,指的是带权路径长度最小的二叉树。树的带权路径常记作: 其中,nnn为树中叶子结点的数目,wkw_kwk​为第kkk个叶子结点的权值,lkl_klk​为第kkk个叶子结点与根结点的路径长度。 带权路径长度是带权结点和根结点之间的路径长度与该结点的权值的乘积。有关带权结点、路径长度的概念请参阅这篇博客。 对于含有nnn个叶子结点的哈夫曼树,其共有
2022-12-16 00:15:41 213KB 哈夫曼树 学习 数据
1
1.综合应用 有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能: (1) 将这些数据存放至文件stuf.dat中; (2)将文件中的数据读出至结构数组中,并显示之; (3)输出总分最高分和最低分的名字; (4)输出总分在340分,单科成绩不低于80分的名单; (5)求出各科平均分数; (6)按总分排名; (7)输出补考名单。 2. 折半查找实现 用折半查找法,实现对任意一组数据的查找。(任意一组数据,意味着需要先对数据列进行排序,然后才能用折半方法查找) 3. 二叉排序树的创建 输入任意的数列创建二叉排序树,输出先序、中序和后序的遍历结果。 要求:存储结构利用二叉链表 4. 快速排序 实现对任意一组数据的快速排序。 5. 2路-归并排序 实现对任意一组数据的2路-归并排序。
2022-12-15 22:57:32 24KB 二叉树应用 拆半查找
1
算法与数据结构课程设计源码与文档,题目为 约瑟夫问题和人事管理
2022-12-15 21:44:02 1.54MB 算法 数据结构
1
算法与数据结构课程设计源码与文档,题目为客房管理系统和哈夫曼树的编译系统
2022-12-15 20:22:43 648KB 算法 数据结构
1
清华大学出版社 曹志刚主编的《现代通信原理》的课后习题指导
2022-12-15 19:50:17 5.84MB 通信原理 课后答案
1