![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 62
hixiaowen
这个作者很懒,什么都没留下…
展开
-
非递归后序遍历二叉树
void PostOrder(BiTree bt, void (*visit)(TElemType))/* 使用栈,非递归后序遍历二叉树bt, *//* 对每个结点的元素域data调用函数visit */{ Stack s; InitStack(s); SElemType selem; BiTree pb=bt; wh原创 2012-04-30 17:25:11 · 338 阅读 · 0 评论 -
数据结构复习笔记(递归先序遍历)
6.41③ 编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。要求实现下列函数:TElemType PreOrder(BiTree bt, int k);/* bt is the root node of a binary linked list, *//* Preorder travel it and find the node whose *//* po原创 2012-05-01 12:18:26 · 1313 阅读 · 0 评论 -
数据结构复习(交换左右子树)
编写递归算法,将二叉树中所有结点的左、右子树相互交换。要求实现下列函数:void Exchange(BiTree &bt);/* Exchange the left and right leaves of *//* bitree whose root node is bt */二叉链表类型定义:typedef struct BiTNode {原创 2012-05-03 14:54:35 · 1400 阅读 · 0 评论 -
数据结构复习(求特定子树的高度)
④ 编写递归算法:求二叉树中以元素值为x的结点为根的子树的深度。要求实现下列函数:int Depthx(BiTree T, TElemType x);/* 求二叉树中以值为x的结点为根的子树深度 */二叉链表类型定义:typedef struct BiTNode { TElemType data; BiTNode *lchild, *rchild;原创 2012-05-04 15:00:18 · 855 阅读 · 0 评论 -
数据结构复习(层次遍历法复制二叉树)
编写复制一棵二叉树的非递归算法。要求实现下列函数:void CopyBiTree(BiTree T, BiTree &TT);/* 基于层次遍历的非递归复制二叉链表 */二叉链表类型定义:typedef char TElemType; // 设二叉树的元素为char类型typedef struct BiTNode { TElemType data;原创 2012-05-05 13:09:13 · 871 阅读 · 0 评论 -
数据结构复习(层次遍历)
编写按层次顺序(同一层自左至右)遍历二叉树的算法。要求实现下列函数:void LevelOrder(BiTree bt, char *ss);/* travel BiTree bt by level, Return result by ss. */二叉链表类型定义:typedef char TElemType; // 设二叉树的元素为char类型typedef stru原创 2012-05-06 21:33:48 · 1075 阅读 · 0 评论 -
数据结构复习(先序创建链表二叉树)
已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。要求实现以下函数:void BuildBiTree(BiTree &bt, int ps, char *pre, int is, char *ino, int n);/* 当前要建立的子树bt的元素总数为n,*//* 元素原创 2012-05-06 21:30:00 · 2556 阅读 · 0 评论 -
数据结构复习(完全二叉树判定)
编写算法判别给定二叉树是否为完全二叉树。要求实现下列函数:Status CompleteBiTree(BiTree bt);/* judge if the binary tree whose root is bt *//* is a complete tree. */二叉链表类型定义:typedef struct BiTNode原创 2012-05-06 21:26:47 · 624 阅读 · 0 评论 -
数据结构复习(输出二叉排序树部分元素)
编写递归算法,从大到小输出给定二叉排序树中所有关键字不小于x的数据元素。要求你的算法的时间复杂度为O(log2n+m),其中n为排序树中所含结点数,m为输出的关键字个数。实现下列函数:void OrderOut(BiTree t, KeyType x, void(*visit)(TElemType));/* Output is to use visit(t->data);原创 2012-05-10 19:44:57 · 1890 阅读 · 0 评论 -
排序算法概述
内部排序:整个排序过程不需要访问外存便能完成内部排序原理:逐步扩大记录的有序序列的过程基于以上原理的几大类排序算法:(1)插入排序:将无序序列中的一个或者几个记录插入到有序序列中,从而增加有序子序列的长度(2)交换排序:通过交换无序序列中的记录,从而得到其中关键字最小或者最大的记录,并将它们加入到有序序列中(3)选择排序:从无序子序列中选择最大或者最小的记录,并将它们加入到有序原创 2012-09-25 15:16:30 · 243 阅读 · 0 评论 -
数据结构(非递归先序遍历)
试直接利用栈的基本操作写出先序遍历的非递归形式的算法(提示:不必按3.3.2节介绍的从递归到非递归的方法而直接写出非递归算法)。要求实现下列函数:void PreOrder(BiTree bt, void (*visit)(TElemType)); /* 使用栈,非递归先序遍历二叉树bt, *//* 对每个结点的元素域data调用函数visit */二叉链表类型定原创 2012-04-27 16:49:11 · 2036 阅读 · 0 评论 -
二叉树相似性
若已知两棵二叉树B1和B2皆为空,或者皆不空且B1的左、右子树和B2的左、右子树分别相似,则称二叉树B1和B2相似。试编写算法,判别给定两棵二叉树是否相似。要求实现下列函数:Status Similar(BiTree t1, BiTree t2);/* 判断两棵二叉树是否相似的递归算法 */二叉链表类型定义:typedef struct BiTNode {原创 2012-04-26 15:43:20 · 1135 阅读 · 0 评论 -
数据结构
一、基本概念:1、图书馆书目信息可以抽象为一个线性表(每个表结点是一本书的信息,而这些信息有一个信息项是检索的主码)2、计算机下棋游戏(博弈问题)可以抽象为一棵树的模型(下棋的过程是从根到叶子的路径,而不同的叶子是不同下棋策略对应的不同结果)3、通常,交通通路问题的数学模型是图数据结构(每个顶点表示一条通路,通路之间相互矛盾的关系以两个顶点之间的连线表示)(设置交通灯问题等价为对图顶点原创 2012-03-11 10:28:38 · 270 阅读 · 0 评论 -
线性表的一些概念
一、线性表的概念:1、线性表中的数据元素可以是各种各样的,但同一线性表 中的元素必定具有相同的特征(属于同一数据对象),相邻元素之间存在序偶关系2、记录:一个数据元素含有多个数据项3、含有大量记录的线性表成为文件二、线性表的基本操作:增:InitList(&L):构造一个空的线性表ListInsert(&L,i,e):插入结点删:ListDelete(&L,i,原创 2012-03-11 10:47:28 · 719 阅读 · 0 评论 -
非递减顺序表的合并
//破坏原有的链表实现合并:void MergeList(List La,List Lb,List &Lc){ ListClear(Lc); ElemType ea,eb; while(!ListEmpty(La)&&!ListEmpty(Lb)){ GetElem(La,1,ea); GetElem(Lb,1,eb); if(ea<eb){ List原创 2012-03-11 12:24:25 · 1357 阅读 · 0 评论 -
线性表初始化、插入、删除操作
顺序表的定义:#define LIST_INIT_SIZE 100#define LIST_INCREMENT 10struct SqList{ ElemType *elem; int listsize; int length;}SqList; status ListInit_Sq(SqList &L){ L.el原创 2012-03-12 20:45:33 · 622 阅读 · 0 评论 -
顺序表查找算法
顺序表的插入和删除算法的时间复杂度为O(n);求顺序表表长以及取顺序表第i个元素的值这两个算法的时间复杂度为O(1)查找算法LocateElem_Sq的时间复杂度为O(L.length) 查找算法的实现:int LocateElem(SqList &L,ElemType elem,status(*compare)(ElemType&,ElemType &)){原创 2012-03-13 15:49:03 · 1465 阅读 · 0 评论 -
单链表的存储结构及其基本操作
指针为数据元素之间逻辑关系的映射typedef struct LNode{ ElemType data; struct LNode *next;}LNode,* LinkList; Status GetElem(LinkList L,int index,ElemType &elem){ if(index exi原创 2012-03-14 22:32:41 · 878 阅读 · 0 评论 -
单链表的其他操作
//创建头结点,并在头结点后倒序插入//不需要使用附加指针 void creatList(LinkList &L,int n){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(int i=1;i p=(LinkList)malloc(sizeof(LN原创 2012-03-15 21:55:18 · 269 阅读 · 0 评论 -
二叉树的顺序存储
假定用两个一维数组L[1..n]和R[1..n]作为有n个结点的二叉树的存储结构, L[i]和R[i]分别指示结点i的左孩子和右孩子,0表示空。试写一个算法判别结点u是否为结点v的子孙。要求实现以下函数:Status Dencendant(Array1D L,Array1D R,int n,int u,int v){ if(L[v]==0&&R[v]==0)原创 2012-04-24 15:01:00 · 532 阅读 · 0 评论 -
二叉树2
假定用两个一维数组L[1..n]和R[1..n]作为有n个结点的二叉树的存储结构, L[i]和R[i]分别指示结点i的左孩子和右孩子,0表示空。试写一个算法,先由L和R建立一维数组T[1..n],使T中第i(i=1,2,...,n)个分量指示结点i的双亲,然后判别结点u是否为结点v的子孙。要求实现以下函数:Status Dencend(Array1D L, Array1原创 2012-04-25 12:24:17 · 517 阅读 · 0 评论 -
卡特兰数
123456进栈,出栈有多少种情况?c(n,2n)/(n+1) n=6→132原创 2012-11-14 22:36:09 · 334 阅读 · 0 评论