0%

简介

  • 概念:
    • 由顶点的有穷非空集合和顶点之间边的集合组成, 通常表示为: G(V,E), 其中, G表示一个图, V是图G中顶点的集合, E是图G中边的集合
  • 异同:
    • 线性表中把数据元素叫做元素, 树中将数据元素叫结点, 在图中数据元素叫做顶点(Vertex)
    • 线性表中可以没有数据元素,称为空表; 树中可以没有结点,叫做空树; 图中不允许没有顶点,若V是顶点的集合, 则集合V有穷且非空
    • 线性表中, 相邻的数据元素具有线性关系; 树结构中, 相邻两层的结点具有层次关系; 图中, 任意两个顶点之间都可能有关系, 顶点之间的逻辑关系用边来表示, 边集可以是空

相关定义

  • 无向边:
    • 若顶点vi, vj之间的边没有方向, 则称这条边为无向边, 用无序偶对(vi,vj)来表示
  • 无向图:
    • 如果图中任意两个顶点之间的边都是无向边, 则称该图为无向图
  • 无向完全图:
    • 在无向图中, 如果任意两个顶点之间都存在边, 则称该图为无向完全图
  • 有向边:
    • 若从顶点vi到vj之间的边有方向, 则称这条边为有向边, 也称为弧(Arc), 用有序偶<vi,vj>来表示, vi称为狐尾(Tail), vj称为弧头(Head)
  • 有向图(Directed graphs):
    • 如果图中任意两个顶点之间的边都是有向边, 则称该图为有向图
  • 有向完全图:
    • 在有向图中, 如果任意两个顶点之间都存在方向互为相反的两条弧, 则称该图为有向完全图
  • 简单图:
    • 在图中, 若不存在顶点到其自身的边, 且同一条边不重复出现, 则称这样的图为简单图
  • 权(Weight): 与图的边或弧相关的数
  • 网(NetWork): 带权的图
  • 子图:
    • 假设有两个图G=(V,{E}), G’=(V’,{E’}), 如果V’包含于V, 且E’包含于E, 则称G’为G的子图

简介

  • 概念: 为n(n>=0)个结点的有限集。n=0时为空树。
  • 特点: 在任意一棵非空树中
    • 有且仅有一个特定的称为根(Root)的结点
    • 当n>1时, 其余结点可以分为m(m>0)个互不相交的有限集T1、T2、……、Tm, 其中每一个集合本身又是一棵树, 并且称为根的子树(SubTree)

结点分类

  • 根结点: 无双亲, 唯一
  • 叶结点: 无孩子, 可以多个
  • 中间结点: 一个双亲多个孩子

简介

  • 概念: 零个或多个数据元素的有限序列

抽象数据类型定义

ADT 线性表List
Data
	线性表的数据对象集合为{a1,a2,...,an}, 每个元素的类型均为DataType, 除第一个元素a1外,每一个元素有且只有一个直接前驱元素, 除了最后一个元素an外, 每一个元素有且只有直接后驱元素。数据元素之间的关系是一对一的关系
Operation
    InitList(*L): 初始化操作, 构造一个空的线性表L
    ListEmpty(L): 若线性表L为空表,则返回TRUE,否则返回FALSE
    ClearList(*L): 将线性表置空
    GetElem(L,i,*e):
        初始条件:线性表已存在(1≤i≤ListLenght(L))
        操作结果:用e返回线性表L中第i个数据元素的值
    locatElem(L,e): 在线性表中查找与给定值e相等的元素, 如果查找成功, 返回该元素在表中的序号表示成功; 否则, 返回0表示失败
    ListInsert(*L,i,e)
        初始条件:线性表已存在(1≤i≤ListLenght(L)+1)
        操作结果:在线性表L中第i个数据元素之前插入新元素e,L长度加1
    ListDelete(*L,i,&e)
        初始条件:线性表已存在(1≤i≤ListLenght(L))
        操作结果:删除线性表L中第i个数据元素,用e返回其值,L长度减1
    ListLenght(L)
        初始条件:线性表已存在
        操作结果:返回线性表L数据元素个数
end ADT

获取当前日期和时间

使用time模块

import time

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
# Out: 2016-12-08 17:14:29

使用datetime模块

from datetime import datetime
from datetime import date

today = date.today()
print(str(today.year) + '-' + str(today.month) + '-' + str(today.day))   
# Out: 2016-12-8

print(today.strftime('%Y-%m-%d'))
# Out: 2016-12-08

now = datetime.now()
print(now.strftime('%Y-%m-%d %H:%M:%S'))
# Out: 2016-12-08 17:14:29

用途

加载网页

  • 说明:默认会打开自带的浏览器,使用WebView去加载,则需复写shouldOverrideUrlLoading方法,并返回为true
mWebView.setWebViewClient(new WebViewClient(){
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       view.loadUrl(url);
       //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
       return true;
   }
});
  • return值的说明:
    • true: 在打开新的url时WebView就不会再加载这个url了,所有处理都需要在WebView中操作,包含加载
    • false(默认): 系统就认为上层没有做处理,接下来还是会继续加载这个url的
      • 如果我们拦截了某个url,那么return false 和 return true区别不大,所以一般建议 return false

简介

  • 定义:
    • 假设有n个记录的序列为{r1,r2,…,rn}, 其相应的关键字分别为{k1,k2,…,kn}, 需确定1,2,…,n的一种排列p1,p2,…,pn, 使其相应的关键字满足k_p1 <= k_p2 <= … <= k_pn (非递减或非递增)关系, 即使得序列成为一个按关键字 有序的序列{r_p1,r_p2,…,r_pn}, 这样的操作就称为排序
  • 说明:
    • 排序可以看成是线性表的一种操作
    • 排序的依据是关键字之间的大小关系
    • 组合排序可以将主关键字与次关键字拼成字符串, 转化成单关键字排序

网络编程概述

网络编程的本质是两个设备之间的数据交换(把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据)。

网络模型

  • OSI参考模型
  • TCP/IP 参考模型

IO包中的其他类

打印流

  • PrintWriter与PrintStream:可以直接操作输入流和文件,都属于输出流,分别针对字符和字节。
  • 调用 println 方法有自动 flush 功能
  • PrintWriter 和 PrintStream 重载的 print()和 println()用于多种数据类型的输出。
  • print()里的参数不能为空;println()可以

IO流

概述:

  • 用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。

分类(按操作数据):

  • 字符流的抽象基类:
    • Reader
      • BuffedReader(字符读取流缓冲区)
      • InputStreamReader(转换流)
        • FileReader
    • Writer
      • PrintWrite
      • BuffedWriter(字符输出流缓冲区)
      • OutputStreamWriter(转换流)
        • FileWriter

Map集合

概述:

  • 该集合存储键值对。一次添加一对,而且要保证键的唯一性。
  • 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键*值对)。

常用方法: