一程序概念:

  1.对身边的任何一个事物进行认知和分类,从而得到一些信息;
  2.在得到的信息基础之上建立了概念模型;
  3.根据概念模型将我们生活中的实际问题转换成计算机能理解的形式;
  4.用户通过人机交互,从而解决实际生活中出现的问题!

二.数据结构:

  就是用来反映一个概念模型的内部组成!也就是概念模型由那些具体的数据构成的!

.线性结构:

  1.数组:存储一系列相同类型的数据集合!在内存总会开辟一块连续的内存空间!

     2.链表 : 单链表  双向链表  循环链表

  

//单链表
public class MyNode {
private int data; // 元素ABC的值
private MyNode next; // 下一个元素 public MyNode(int d){
data=d; //把用户传递来的值 给我们节点的元素
}
//用户传递来的下一个节点
private void append(MyNode myNode) {
MyNode node=this;
while(node.next!=null){
node=node.next;
}
node.next=myNode; //把传递过来的对象作为当前节点的下一个
} //要增加的节点
private void add(MyNode myNode) {
myNode.next=next;//把当前的null 给了传递过来节点的next属性
next=myNode;
} //显示链表中所有的节点
private void show() {
MyNode node=this;
while (node!=null){
System.out.println(node.data);
node= node.next;
}
} public static void main(String[] args) {
//创建我们自己的链表
MyNode node=new MyNode(10);
node.append(new MyNode(30));
node.append(new MyNode(40));
node.add(new MyNode(20));
node.show();
}
}

3.分叉关系:
    01.图
    02.树
    03.二叉树
    根节点 中间节点 叶子节点 左子树 右子树

    根节点没有父节点!
    中间节点有父节点也有子节点!
    叶子节点没有子节点,但是有父节点!

  4.遍历二叉树的两种方式:
    01.前序遍历===》先根遍历===》 根=》左=》右
    02.中序遍历===》 左=》根=》右

//二叉排序树
public class MyTree {
private int data; //树上的数据
private MyTree left; //左边
private MyTree right; //右边 public MyTree(int data){
this.data=data;
} //新增的树节点
private void add(MyTree myTree) {
if (myTree.data<this.data){
if (left==null){ //务必判断 否则数据会覆盖
left=myTree;
}else {
left.add(myTree);
}
}else{
if (right==null){ //务必判断 否则数据会覆盖
right=myTree;
}else {
right.add(myTree);
}
}
} //显示树上所有的数据
private void show() {
if (left!=null) left.show();
System.out.println(data); //中序
if (right!=null) right.sho
//二叉排序树
public class TreeDemo {
//创建集合保存所有节点
static List<Node> list=new ArrayList<>(); class Node{ //节点
String data; //值
String parent; //父节点的值
} //parent是父节点的值,child是子节点的值
private void add(String parent, String child) {
Node node=new Node();
node.data=child;
node.parent=parent;
list.add(node); //把数据放进集合
} //根据子节点查询对应的父节点
private static void showParent(String child) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).data.equals(child)){
System.out.println(list.get(i).parent);
}
}
}
//根据父节点查询对应的子节点
private static List<String> showChildren(String parent) {
List<String> children=new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).parent.equals(parent)){
children.add(list.get(i).data);
}
}
return children;
} public static void main(String[] args) {
TreeDemo tree=new TreeDemo(); //创建一个空树
tree.add("学校","一年级");
tree.add("学校","二年级");
tree.add("学校","三年级");
tree.add("一年级","一年级1班");
tree.add("一年级","一年级2班");
tree.add("一年级","一年级3班");
tree.add("二年级","二年级1班");
tree.add("二年级","二年级2班");
tree.add("三年级","三年级1班"); //根据子节点查询对应的父节点
// showParent("二年级1班");
//根据父节点查询对应的子节点
showChildren("学校"); }
} public static void main(String[] args) { //创建一个树的根节点
MyTree tree=new MyTree(50);
tree.add(new MyTree(45));
tree.add(new MyTree(49));
tree.add(new MyTree(82));
tree.add(new MyTree(75));
tree.add(new MyTree(46));
tree.add(new MyTree(99));
tree.show();
}
}

程序------>数据结构的更多相关文章

  1. 初转java随感(一)程序=数据结构+算法

    大学刚学编程的时候,有一句很经典的话程序=数据结构+算法 今天有了进一步认识. 场景: 1.当前局面 (1)有现成的封装好的分页组件 返回结果是page.类型为:Page.包括 page 分页信息,d ...

  2. Spark程序数据结构优化

    场景: 1.scala中的对象:对象头是16个字节(包含指向对象的指针等源数据信息),如果对象中只有一个int的属性,则会占用20个字节,也就是说对象的源数据占用了大部分的空间,所以在封装数据的时候尽 ...

  3. (IOS)BaiduFM 程序分析

    本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源app BaiduFM的研究心得. 项目地址:https://github.com/belm/BaiduFM-Swift 一.项 ...

  4. MySQL索引背后的数据结构及算法原理 --转

    写在前面的话 在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重 ...

  5. WinDbg 调试.net程序

    WinDbg支持以下三种类型的命令: ·        常规命令,用来调试进程 ·        点命令,用来控制调试器 ·        扩展命令,可以添加叫WinDbg的自定义命令,一般由扩展dl ...

  6. java程序练习:猜字母

    猜字母程序=数据结构+算法 首先:定义数据结构1.找名词Input:输入变量Output:输出变量隐含:找到隐含的变量,如字符串 其次:定义算法,程序的处理 最后:按照顺序,逐步实现 注意:1.基本数 ...

  7. MySQL源码:索引相关的数据结构

    http://www.orczhou.com/index.php/2012/11/mysql-source-code-data-structure-about-index/ 本文将尝试介绍MySQL索 ...

  8. 数据结构 Python实现

    参考博客:浅谈算法和数据结构: 一 栈和队列   Python数据结构--栈.队列的实现(一)    Python数据结构--栈.队列的实现(二)    Python数据结构--链表的实现 数据结构 ...

  9. 数据结构(java版)学习笔记(序章)

    程序=数据结构+算法 序章做一个简单的思维导图,方便理解数据结构这门课的大纲,接下来我们将是按照线性表,栈,队列,串,树和图的顺序依次往下学.

随机推荐

  1. CentOS下安装Vmtools

    基本步骤差不多 [root@rd01 ~]# cd /media [root@rd01 ~]# ls -a [root@rd01 ~]# cp VMwareTools-5.5.1-19175.tar. ...

  2. history 命令历史

    在终端中按捉[Ctrl]键的同时[r]键,出现提示:(reverse-i-search),此时你尝试一下输入你以前输入过的命令,当你每输入一个字符 的时候,终端都会滚动显示你的历史命令.当显示到你想找 ...

  3. Ant 学习笔记

    1.下载Ant 官方网站http://ant.apache.org/bindownload.cgi 下载最新版本  .zip archive: apache-ant-1.9.4-bin.zip [PG ...

  4. ValueError: {0} is not a valid coordinate or range问题解决

    获取excel多列方法: >>> colC = ws['C'] >>> col_range = ws['C:D'] 采用python 实现时,开始列与结束列采用变量 ...

  5. 浅谈JavaScript对象数组根据某属性sort升降序排序

    1.自定义一个比较器,其参数为待排序的属性. 2.将带参数的比较器传入sort(). var data = [ {name: "Bruce", age: 23, id: 16, s ...

  6. Spark RDD Transformation 简单用例(一)

    map(func) /** * Return a new RDD by applying a function to all elements of this RDD. */ def map[U: C ...

  7. uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比

    框架列表. https://www.cnblogs.com/xiaxiaxia/articles/5705557.html 前言 近期,要开一个新的项目,APP类型.最重要的需求就是能够随时调整APP ...

  8. Django----Admin流程

    Admin执行步骤 启动文件: 1:创建app-----stark 2:在每个app中创建stark 3:django----admin---- 4:在stark中写入:--------------- ...

  9. IBM flex system P260

    CMM 机箱管理模块 提供如下功能: 电力控制 风扇管理 机箱和计算节点初始化 交换机管理 诊断:机箱.IO选项和计算节点 资源发现和库存管理 资源告警和监控 机箱和计算节点的电源管理 安全策略管理 ...

  10. 常见的压缩文件格式案例tarZ

    在AIX上最常见的压缩文件就是.tar压缩格式的文件了.  而除了tar文件以外,有时会遇到数据是用其它的压缩文件格式,所以偶顺手整理了一些常见的压缩文件格式,在AIX要怎么解压缩 : 一. .tar ...