一程序概念:

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

二.数据结构:

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

.线性结构:

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

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

  

  1. //单链表
  2. public class MyNode {
  3. private int data; // 元素ABC的值
  4. private MyNode next; // 下一个元素
  5.  
  6. public MyNode(int d){
  7. data=d; //把用户传递来的值 给我们节点的元素
  8. }
  9. //用户传递来的下一个节点
  10. private void append(MyNode myNode) {
  11. MyNode node=this;
  12. while(node.next!=null){
  13. node=node.next;
  14. }
  15. node.next=myNode; //把传递过来的对象作为当前节点的下一个
  16. }
  17.  
  18. //要增加的节点
  19. private void add(MyNode myNode) {
  20. myNode.next=next;//把当前的null 给了传递过来节点的next属性
  21. next=myNode;
  22. }
  23.  
  24. //显示链表中所有的节点
  25. private void show() {
  26. MyNode node=this;
  27. while (node!=null){
  28. System.out.println(node.data);
  29. node= node.next;
  30. }
  31. }
  32.  
  33. public static void main(String[] args) {
  34. //创建我们自己的链表
  35. MyNode node=new MyNode(10);
  36. node.append(new MyNode(30));
  37. node.append(new MyNode(40));
  38. node.add(new MyNode(20));
  39. node.show();
  40. }
  41. }

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

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

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

  1. //二叉排序树
  2. public class MyTree {
  3. private int data; //树上的数据
  4. private MyTree left; //左边
  5. private MyTree right; //右边
  6.  
  7. public MyTree(int data){
  8. this.data=data;
  9. }
  10.  
  11. //新增的树节点
  12. private void add(MyTree myTree) {
  13. if (myTree.data<this.data){
  14. if (left==null){ //务必判断 否则数据会覆盖
  15. left=myTree;
  16. }else {
  17. left.add(myTree);
  18. }
  19. }else{
  20. if (right==null){ //务必判断 否则数据会覆盖
  21. right=myTree;
  22. }else {
  23. right.add(myTree);
  24. }
  25. }
  26. }
  27.  
  28. //显示树上所有的数据
  29. private void show() {
  30. if (left!=null) left.show();
  31. System.out.println(data); //中序
  32. if (right!=null) right.sho
  1. //二叉排序树
  2. public class TreeDemo {
  3. //创建集合保存所有节点
  4. static List<Node> list=new ArrayList<>();
  5.  
  6. class Node{ //节点
  7. String data; //值
  8. String parent; //父节点的值
  9. }
  10.  
  11. //parent是父节点的值,child是子节点的值
  12. private void add(String parent, String child) {
  13. Node node=new Node();
  14. node.data=child;
  15. node.parent=parent;
  16. list.add(node); //把数据放进集合
  17. }
  18.  
  19. //根据子节点查询对应的父节点
  20. private static void showParent(String child) {
  21. for (int i = 0; i < list.size(); i++) {
  22. if (list.get(i).data.equals(child)){
  23. System.out.println(list.get(i).parent);
  24. }
  25. }
  26. }
  27. //根据父节点查询对应的子节点
  28. private static List<String> showChildren(String parent) {
  29. List<String> children=new ArrayList<>();
  30. for (int i = 0; i < list.size(); i++) {
  31. if (list.get(i).parent.equals(parent)){
  32. children.add(list.get(i).data);
  33. }
  34. }
  35. return children;
  36. }
  37.  
  38. public static void main(String[] args) {
  39. TreeDemo tree=new TreeDemo(); //创建一个空树
  40. tree.add("学校","一年级");
  41. tree.add("学校","二年级");
  42. tree.add("学校","三年级");
  43. tree.add("一年级","一年级1班");
  44. tree.add("一年级","一年级2班");
  45. tree.add("一年级","一年级3班");
  46. tree.add("二年级","二年级1班");
  47. tree.add("二年级","二年级2班");
  48. tree.add("三年级","三年级1班");
  49.  
  50. //根据子节点查询对应的父节点
  51. // showParent("二年级1班");
  52. //根据父节点查询对应的子节点
  53. showChildren("学校");
  54.  
  55. }
  56. }
  57.  
  58. public static void main(String[] args) {
  59.  
  60. //创建一个树的根节点
  61. MyTree tree=new MyTree(50);
  62. tree.add(new MyTree(45));
  63. tree.add(new MyTree(49));
  64. tree.add(new MyTree(82));
  65. tree.add(new MyTree(75));
  66. tree.add(new MyTree(46));
  67. tree.add(new MyTree(99));
  68. tree.show();
  69. }
  70. }

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

  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. Caltech数据使用详情

    Caltech官网: http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/ 以Caltech测试集为例(大概是4095个图片 ...

  2. Ubuntu 14.04 下搭建SVN服务器 (转载自 http://www.linuxidc.com/Linux/2015-01/111956.htm)-------------我所用到是红色字体

    http://www.linuxidc.com/Linux/2015-01/111956.htm Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get i ...

  3. PHP最全笔记(三)(值得收藏,不时翻看一下)

    /* [数组函数] *///统计计算count        计算数组中的单元数目或对象中的属性个数array_count_values  统计数组中所有的值出现的次数array_product    ...

  4. 【Mac brew】代理安装brew insall

    http_proxy=dev-proxy.**.**:8080 https_proxy=dev-proxy.**.**:8080  brew install npm

  5. [Node.js] 00 - Where do we put Node.js

    Ref: 前后端分离的思考与实践(五篇软文) 其实就是在吹淘宝自己的Midway-ModelProxy架构. 第一篇 起因 为了提升开发效率,前后端分离的需求越来越被重视, 同一份数据接口,我们可以定 ...

  6. mysql无法生成log文件

    做服务器主从配置时,发现/var/log/mysql下面一直没有log文件,明明配置文件/etc/mysql/mysql.conf.d/mysqld.cnf也开启log了. general_log_f ...

  7. 十、K3 WISE 开发插件《SQL Profiler跟踪单据操作时产生的SQL语句》

    =================================== 目录: 1.查询帐套的数据库DBID 2.配置需要跟踪数据库的DBID 3.配置跟踪参数 4.跟踪进行 5.分析跟踪语句 === ...

  8. gitlab的rack-attack机制和如何设置白名单的记录

    目标gitlab是使用源码安装的10.5中文版 大纲: gitlab rack-attack 机制的作用 如何启用和禁用gitlab的rack-attack机制,以及如何配置白名单 如果一个ip被错误 ...

  9. spring框架排错

    1.格式错误. http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/sp ...

  10. ubuntu如何设置开机启动默认命令行界面

    图形模式下,首先进入终端: 1. 运行 sudo vi/etc/default/grub 2. 找到 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 3.改为 GR ...