![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构实战
数据结构方面的实战案例
天青如水
这个作者很懒,什么都没留下…
展开
-
第一章---线性表
题目: 这是一个约瑟夫环问题,用C语言数组解决如下 #define MAXN 100 void printring(int a[],int n,int i,int k){ int b[MAXN],j,s; for(j=0;j<n;j++){ b[j]=0; printf("b[%d]=%d\n",j,b[j]); } ...原创 2018-10-05 17:13:44 · 134 阅读 · 0 评论 -
数据结构实战-----序
本系列文章习题主要参考《数据结构教程》(蔡子经 施伯乐),书籍下载地址:https://download.csdn.net/download/qq_16829085/10704399 代码采用c语言编写,主要是线性表、串、排序、数组、树、树的查找及其应用、图和外部排序等算法练习...翻译 2018-10-07 22:53:11 · 269 阅读 · 0 评论 -
第二章---串
#include <stdio.h> #include <typeinfo.h> #define MAXN 100 typedef enum{ fail, success } status; //1.求出串s的长度,strlen(s)的值是一个非负整数。若s是一个空串,则strlen(s)=0 int strlen(char s[]) { int i; ...原创 2018-10-07 22:59:14 · 228 阅读 · 0 评论 -
二叉树非递归遍历的通用算法
二叉树的三种遍历策略,关键在于处理节点的时机不同:前序遍历是遇到节点时处理,中序是处理完左节点后再处理,而后序是在处理完左右节点后再处理。 使用非递归方法实现时,除了记录当前的节点的访问栈,还需要记录当前节点的状态。对于每一个节点,我们用0来表示尚未处理左右子节点,1表示仅仅处理完毕左节点,2表示左右节点都处理完毕。那么,前序,中序,后序遍历的唯一不同,无非是对节点处理的时机不同而已。 c...转载 2018-10-31 09:47:48 · 432 阅读 · 1 评论 -
二叉树的常见创建和遍历
#include <stdio.h> #include <stdlib.h>> const int MAX=20; typedef struct Node { char data; struct Node*lchild; struct Node*rchild; }BiTreeNode; //构造二叉树 //1.按照先序遍历,利用递归构造 //ABD...原创 2018-10-29 14:37:35 · 185 阅读 · 0 评论 -
二叉树常见问题
1.两颗二叉树A和B,判断B是不是A的子结构 /* 思路:1.在树A中找到和B的根节点一样的节点R 2.判断树A以R为根节点的子树是不是包含和树B一样的结构 */ bool DoesTree1HaveTree2(BiTreeNode*T1,BiTreeNode*T2); bool HasSubtree(BiTreeNode*T1,BiTreeNode*T2) { bool ...原创 2018-10-29 15:53:37 · 430 阅读 · 0 评论 -
栈常见问题
1.两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的 所有数字均不相等 /* Push:1 2 3 4 5 Pop:4 5 3 2 1 思路:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出 如果下一个弹出的数字不在栈顶,把压栈序列中还没有入栈的数字压入栈 直到把下一个需要弹出的数字压入栈顶为止。如果没找到,则...原创 2018-10-29 19:42:12 · 1526 阅读 · 0 评论