数据结构知识点
HBWYZ007
这个作者很懒,什么都没留下…
展开
-
查找二叉树中第k个结点的值
题目假设二叉树采用二叉链表存储结构存储,编写一个程序,输出先序遍历序列中第k个结点的值,假设k不大于结点的总数#函数程序代码块int n=0;//n为全局变量,记录当前访问的结点的位置编号,此为此函数之要点void locate(BTNode *p, int k){ if(p!=NULL) { ++n; if(k==n) { cout<<p->data<<endl; return; } else { locate(p-原创 2021-03-08 22:05:54 · 1364 阅读 · 0 评论 -
查找data域为key的结点
题目在一棵以二叉链表为存储结构的二叉树中,查找data域值等于key的结点是否存在(找到任何一个满足要求的结点即可),如果存在,则将q指向该结点,否则q赋值为NULL,假设data域为int型函数代码//寻找data域等于key的结点,并用q指向它,若不存在,则q指向NULLvoid search(BTNode *p, BTNode *&q, int key)//注意,这里的q参数定义为引用型指针,因为q要改变{ if(p!=NULL) { if(p->data==key原创 2021-03-08 21:19:21 · 659 阅读 · 0 评论 -
求二叉树的深度
题目写一个算法求一棵二叉树的深度,二叉树以二叉链表为存储结构求二叉树深度的函数//求二叉树深度int getDepth(BTNode *T){ int LD,RD;//左右子树的深度 if(T==NULL) { return 0;//设定空树的深度为0 } else { //采用后根遍历 LD=getDepth(T->lchild);//求左子树的深度 RD=getDepth(T->rchild);//求有紫苏的深度 return (LD>原创 2021-03-08 20:32:51 · 3394 阅读 · 1 评论 -
二叉链表存储表达式求值
#题目表达式(a-(b+c)) * (d/e)存储在如图的一棵二叉树中(树结点data域为字符型),编写程序求该表达式的值(表达式中的操作数都是一位的整数)#测试程序#include<iostream>using namespace std;//二叉树链表结点typedef struct BTNode{ struct BTNode *lchild; struct BTNode *rchild; char data; }BTNode;//构造二叉树BTNode *原创 2021-03-08 20:04:19 · 656 阅读 · 0 评论 -
数据结构题目记录
题目有两个稀疏矩阵A,B,规格分别是m * n,n * k;现在要求编写一个函数,来计算C=A * B,并且A,B.C矩阵皆由三元组储存。#函数程序段//先将两个三元组转换成矩阵,然后计算两个矩阵的乘积,然后再转化成三元组void trimatmultiply(int A[][3], int B[][3], int C[][3],int m, int n, int k){ int Ak=A[0][0],Bk=B[0][0]; int Amat[m][n],Bmat[n][k],Cmat[m原创 2021-03-03 22:26:24 · 144 阅读 · 1 评论 -
数据结构题目记录
#题目两个稀疏矩阵A,B,都用三元组存储,且两个矩阵行列数相同,现在编写一个函数计算C=A+B,并且也用三元组表示出来C,矩阵都为int型#函数//先把两个三元组转换成矩阵,然后相加,然后把得到的矩阵转换成三元组void trimatsum(int A[][3],int B[][3],int C[][3]){ int m=A[0][1],n=A[0][2],Ak=A[0][0],Bk=B[0][0]; int Amat[m][n],Bmat[m][n],Cmat[m][n]; int p原创 2021-03-03 21:13:19 · 119 阅读 · 1 评论 -
数据结构题目记录
@题目稀疏矩阵A用三元组表示,编写一个函数,计算机A的转置矩阵B,并且也用三元组储存B函数//遍历三元组A,找列号为1的元素void transpose(int A[][3], int B[][3]){ int column;//列优先 B[0][0]=A[0][0]; B[0][1]=A[0][2]; B[0][2]=A[0][1]; if(A[0][0]>1)//如果A[][3]不空 { int k=0;//记录构造B中元素个数 for(int i=0;i<原创 2021-03-03 20:28:01 · 87 阅读 · 1 评论 -
数据结构题目记录
@题目制作给定m*n矩阵A的三元组,要求以两种形式表示三元组。并且利用三元组判断给定元素x是否存在于矩阵中三元组表示方法1下面展示一些 内联代码片。// A code blockvar foo = 'bar';// An highlighted block//三元组第一种表示形式//制作数组A的三元组B[][3]void createtrimat_1(int A[][maxSize],int m, int n, int B[][3])//A为m行n列{ int k=0;//记录原创 2021-03-03 15:27:31 · 107 阅读 · 1 评论 -
数据结构题目记录
题目编写一个函数,对给定的一个m*n的矩阵A,统计这个矩阵中具有以下特征的元素个数,该元素既是所在行的最大值(最小值),又是所在列的最大值(最小值),打印出来这些特殊元素以及其坐标函数// An highlighted blockvoid sort(int A[m][n])//输出格式:先输出所在行列是最小值的元素:先输出这个特殊值,在输出它的位置,然后换行;在输出是最大值的元素{ //造两个数组min[m],max[m],存储每一行的最小值和最大值,并记录其位置坐标 Location m原创 2021-03-03 14:33:47 · 174 阅读 · 1 评论 -
记录十字链表打印矩阵
记录十字链表打印矩阵## 标题源码#include<iostream>using namespace std;#define maxSize 4//十字链表存储矩阵//普通结点结构定义typedef struct OLNode{ int col,row;//列号,行号 struct OLNode *right,*down; float val; }OLNode;//头结点结构定义typedef struct{ OLNode *rhead,*chead;原创 2021-03-02 22:55:19 · 184 阅读 · 0 评论