zoukankan      html  css  js  c++  java
  • 数据结构学习-1

    算法:

      狭义的算法是与数据的存储方式密切相关

      广义的算法与数据的存储方式无关

      泛型:  利用某种技术达到的效果就是: 不同的存储方式,执行的操作是一样的

    数据结构

      狭义:

      数据结构是专门研究数据存储的问题

      数据的存储包含两个方面: 个体的存储 + 个体关系的存储

      广义:

        数据结构既包含数据的存储也包含数据的操作

          对存储数据的操作就是算法

    数据的存储结构有几种:

     线性结构:连续存储【数组】

           优点:存取速度很快 

           缺点:事先必须知道数组的长度,插入删除元素很慢,空间通常是有限制的,需要大块连续的内存块

          离散存储【链表】

          优点:空间没有限制, 插入删除元素很快

          缺点:存取速度很慢

    再次讨论什么是数据结构(此处习学了数据结构后所写)

      数据结构是研究数据的存储和数据的操作的一门学问

      数据结构的存储分为两部分:

         个体的存储

         个体关系的存储

          从某种角度而言,数据的存储最核心的就是个体关系的存储,个体的存储可以忽略不计

    再次讨论到底什么是泛型

       同一种逻辑结构,无论该逻辑结构物理存储是什么样子的,我们可以对它执行相同的操作

     线性结构的应用:栈和队列

       栈

        定义: 一种可以实现“先进后出”的存储结构

        分类:静态栈

           动态栈

        算法:出栈

           压栈

        应用:函数调用;中断;表达式;内存分配;缓冲处理;迷宫

        队列

         定义: 一种可以实现“先进先出”的存储结构

         分类:链式队列: 用链表实现

         静态队列: 用数组实现

           静态队列通常必须是循环队列

         循环队列的讲解:

           1. 静态队列为什么必须是循环队列

           2. 循环队列需要几个参数来确定 

             需要两个参数来确定:front和rear

           3. 循环队列各个参数的含义

           建议初学者先记住,然后慢慢体会

           1). 队列初始化:front和rear的值都为零

           2). 队列非空:front代表的是队列的第一个元素;rear代表队列的最后一个有效元素

           3). 队列空: front和rear的值相等,但不一定是零

           4. 循环队列入队伪算法讲解

             两步完成:

            1. 将值存入r所代表的位置

            2. 错误的写法: r = r+1;

               正确的写法: r = (r+1)%数组的长度

           5. 循环队列出队伪算法讲解

              f = (f+1)%数组的长度

           6. 如何判断循环队列是否为空

              如果front=rear,则队列一定为空

           7. 如何判断循环队列是否已满

           预备知识: front的值可能比rear大,也可能比rear小,当然也可以两者相等

           两种方式:

            1. 多增加一个标识参数

            2. 少用一个元素(通常用第二种方式)

              如果r和f的值紧挨着,则队列已满。

             用c语言伪算法表示为:

             if((r+1)%数组长度==f)

               已满

             else

               不满

               队列算法:入队,出队

              队列的具体应用: 所以和时间有关的操作都有队列的影子

      

      非线性结构: 树,图

  • 相关阅读:
    Scanner类
    BufferedReader类
    打印类
    管道流
    内存操作流
    转换流——OutputStreamWriter类与InputStreamReader类
    Java字节流与字符流基本操作
    RandomAccessFile类
    File类
    Timer类和TimerTask类
  • 原文地址:https://www.cnblogs.com/spore/p/11094144.html
Copyright © 2011-2022 走看看