高级数据结构.

Slides:



Advertisements
Similar presentations
作者 : 陳鍾誠 單位 : 金門技術學院資管系 URL : 日期 : 2016/7/21 行程的同步 註:本章學術性較重,但考試常考。
Advertisements

定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
我国国有银行 资本构成及资本充足率变化 小组成员:金融 尹佳裕 王淼 刘钰 金融 吴昱.
计算机组成原理.
當我已老 謹以此文獻給像我一樣流浪在外的子女們.
董笑菊 电子信息与电气工程学院 计算机科学与工程系
广州宜家选址分析 0连锁 李若谷 陈玉风 黄小飞 蓝柔盈.
2015年12月14日-2015年12月20日 缩略版.
三國演義之赤壁之戰 By 溫雅婷 胡翊軒 王蓉蓉 高渝涵 鄭巧芳.
指導老師:羅夏美 組別:第四組 組員: 車輛二甲 蔡中銘 車輛三甲 莊鵬彥 國企二甲 陳于甄 國企二甲 詹雯晴 資傳二乙 林怡芳
上海证券交易所 会籍业务办理参考 交易单元租用、退租业务 2012年12月 本分册主办单位:上海证券交易所
农业银行网上签约流程 宁夏金溢投资 内部资料 1.
廉政會報專題報告 農地重劃工程 施工常見缺失 報告:吳東霖 製作:張昌鈴 日期:103年12月23日.
99年成語200題庫(21-40).
專案製作經驗談.
2013 澎湖自助旅行講座 澎湖,其實就是一片海洋 主辦:沿著菊島旅行 協辦: 台北澎湖同鄉會、台中澎湖同鄉會、高雄澎湖同鄉會
班級:行流四甲 組員:497D0004何筱瑩 497D0016鄧宜欣 497D0044呂亭儀 497D0056黃 琪 497D0063賴依淩
“网络问政”给九江新闻网 带来新的发展机遇 -- 九江新闻网 高立东 --.
第二章 进程、线程与作业 多道程序设计 Multi-programming 进程的引入 Process 线程与轻进程
102學年度預算編製說明會 主辦單位:會計室 102/02/22.
程序设计思想与方法入门篇 庄天红.
金門縣重大空難應變機制-消防局 壹、消防搶救、滅火、緊急救護 一、派遣作為:
张健“微课程”工作室作品 当“孔融让梨”遭遇美国孩子 上步小学 陈明静.
网络信息资源的开发与设计 主讲教师 罗双兰 广西师范大学教育科学学院.
社会工作概论 个案工作 课程培训 深圳电大 赖小乐.
前言.
也許你很疑惑: 最近升官的同事,專業能力又沒你強! 情場得意的朋友,長的又沒你帥或美! 小曹要交新朋友,為什麼就是比較簡單!
第9课 北美大陆上的新体制 导入新课 新课教学 课堂小结 知识结构 巩固练习
資源班的知識性文本閱讀 報告人:吳居璋.
多线程编程基本概念 2008.
佇列 (Queue).
講師:郭育倫 第3章 基本資料結構 講師:郭育倫
Chap 3 堆疊與佇列 Stack and Queue.
C#程序设计 c# programming 多线程 C#程序设计课程组.
第十五章 Linked List, Stack and Queue
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
堆疊 Stack chapter 4 德明科技大學資訊科技系.
算法设计与分析.
第一次课后作业 1. C/C++/Java 哪些值不是头等程序对象 2. C/C++/Java 哪些机制采用的是动态束定
数据集合体.
詩文的形成 有意義的字詞 句子 段落 一首詩文的形成,是由有意義的字詞組成句子,再由句子組成段落。
南瑞学堂 学员简明操作指南 上海时代光华教育发展有限公司 2013年.
計數式重複敘述 for 迴圈 P
英码摄像机报警抓拍发微信 设置方法 V
法系與法源 楊智傑.
Multithread 多執行緒 以GUI為例了解物件以及Event
《JAVA程序设计》 语音答疑 辅导老师:高旻.
常宝宝 北京大学计算机科学与技术系 数据结构(三) 常宝宝 北京大学计算机科学与技术系
注意:教程中给出的所有示例代码请勿直接拷贝使用!会引起不必要的错误!
VRP工具or-tools调研 王羚宇
App Inventor 2.
使用服务平台办理离校 操作指南.
爬蟲類動物2 Random Slide Show Menu
Chap2 Stack & Queue.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
目次检索 打印 下载 文字摘录 更换背景 多窗口阅读.
南宁翰林华府 ——地中海风格与现代住宅的融合.
学年第一学期领取教材明细查询的通知 学年第一学期学生使用的教材均在网上平台公示。现将有关事项通知如下:
本节内容 Lua基本语法.
1. 志明打算就客戶服務開發一個語音互動(IVR)系統, 顧客可透過電話鍵盤與系統進行互動。
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
進階資料結構(2) Disjoint Sets
Chapter 7 Relations (關係)
李元金 计算机与信息工程学院 第 12 讲 存储器管理(1) 李元金 计算机与信息工程学院 1/
所得稅法第14條、第126條修正條文 薪資所得計算方式二擇一 定額減除 特定費用減除 維持現行薪資所得特別扣除額20萬元減除方式
亞洲大學 資訊工程學系 多重來源影像監控系統
Section 2-2: 4 (6), 7, 12 (14), 13, 18 (16), 21, 25, 28, 30, 36, 46, 48, 50, 54a Section 3-1: 4 (2), 5, 10, 15, 20, 29, 32 Section 4-1: 3, 7, 8,
第六章 直接成本法.
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

高级数据结构

数据结构:堆栈(1) 堆栈是数据集合体,其中数据具有“后进先出(LIFO)”性质,即最后加入堆栈的数据总是首先取出. 用途:如表达式计算 2

数据结构:堆栈(2) 堆栈的操作 抽象数据类型:尽管不知道堆栈里准备放什么,但操作方式是固定的. 编程实例:stack.py push(x) pop() isEmpty() 抽象数据类型:尽管不知道堆栈里准备放什么,但操作方式是固定的. 编程实例:stack.py 3

数据结构:堆栈(3)

数据结构:队列 队列是数据集合体,其中数据具有“先进先出 (FIFO)”性质,即最先进入队列的数据总是首先取出. 队列也是一种抽象数据类型,完全由操作定义其特性. 两个主要操作: enqueue:入队 dequeue:出队 5

数据结构:链表(1) 列表成员间的逻辑关系如何表示? 顺序存储,存储位置就表示其先后关系 非顺序存储,先后关系靠链接来表示 6

数据结构:链表(2) 链表 插入删除很方便 编程实例:linkedlist.py 7

并行计算

程序的执行 von Neumann体系结构计算机:程序(指令序列)和数据都存储在内存中 CPU根据程序计数器PC(或称指令指针IP)的内容, 取出当前指令执行,然后PC被赋予下一条要执行的指令的地址. 虽然也存在指令级并行技术,但我们讨论的是程序级的并行. 9 9

串行执行程序 CPU执行一个程序时总是从该程序的第一条指令开始,不间断地一直到执行到最后一条指令. 只有一个程序结束,才会去执行下一个程序. CPU每次由一个程序独占.只要前一个程序还没有结束,下一个程序就不能使用CPU. 缺点:系统资源的利用率不高. 计算机系统中有许多资源.当一个程序在使用某个资源时,其他资源是空闲的.如果允许其他程序使用空闲资源,就能提高系统资源的利用率. 10 10

并发执行 计算机程序的执行是由操作系统控制的.现代操作系统都支持所谓"多道程序"或"多任务",即允许多个程序"同时"执行. "同时":在只有一个CPU的情况下,是不可能有真正的多个程序"同时"运行的,因为CPU在任一时刻只能执行一条指令! 分时使用CPU,即CPU在多个程序之间切换. 这种多个相互独立的程序交叉执行的方式称为并发或并行执行. 多处理器/多核处理器上能真正并行. 11 11

进程 进程是指程序的一次执行所形成的实体.程序一旦执行,即创建一个进程. 进程的构成:程序代码+进程状态信息(上下文,包括程序数据的当前值,当前执行点等). 程序与进程:不同程序的执行对应不同的进程;同一个程序多次执行也创建多个进程(相同程序代码+不同上下文). OS调度进程:上下文切换代价高.

线程 线程,是指程序(进程)中的一段代码,它构成程序中一个相对独立的执行流. 线程是一个程序内部的多任务机制. 字面意义:线程是程序内部的一个"线索” 线程是一个程序内部的多任务机制. 一个程序中可以有多个执行"线索".

进程 vs 线程 进程带有独立的状态信息,而一个进程内的多个线程则共享状态,内存和其他资源 进程有独立的地址空间,而同一进程的多个线程共享地址空间 进程间通信(IPC)较麻烦,而线程之间可通过共享内存通信 进程上下文切换开销大,而线程切换开销小

多线程编程 线程原是OS中的概念,是系统的工具,用于系统的功能 线程现在已成为用户程序设计的工具 用在需要并行执行的场合: 科学应用:更快地计算; 解决阻塞:用户输入;在长时间计算期间进行显示服务;多媒体,动画等.

Python多线程:thread模块 程序开始执行,即构成主线程.其中随时可以创建新线程去执行特定任务. 线程的创建和启动: thread.start_new_thread (function, args) 创建新线程并立即返回 新线程启动,向函数function传递参数元组args,并执行function 线程终止:当函数function返回.

例eg9_3:thread模块用法 def task(tName,n): for i in range(n): print "%s:%d\n" % (tName,i) print "%s:任务完成!回真身去喽...\n" % tName thread.interrupt_main() print "<老孙>:我是孙悟空!" print "<老孙>:我拔根毫毛变个小猴儿~~~" thread.start_new_thread(task,("<小猴>",3)) print "<老孙>:我睡会儿,小猴儿干完活再叫醒我~~~\n" while True: print "<老孙>:Zzzzzzz\n" 17

例eg9_4:thread模块用法 def task(tName,n,delay): for i in range(n): time.sleep(delay) print "%s:%d\n" % (tName,i) print "<老孙>:我是孙悟空!" print "<老孙>:我拔根毫毛变个小猴儿<哼>" thread.start_new_thread(task,("<哼>",5,2)) print "<老孙>:我再拔根毫毛变个小猴儿<哈>" thread.start_new_thread(task,("<哈>",5,4)) print "<老孙>:不管你们喽,俺老孙去也~~~\n" 18

Python多线程:threading模块 向构造器传递要执行的函数和参数 t = Thread(target=func,args=(...)) 调用线程对象的start()方法启动线程 t.start()

例eg9_5:threading模块用法 def task(tName,n,delay): for i in range(n): sleep(delay) print "%s:%d\n" % (tName,i) print "<老孙>:我是孙悟空!" print "<老孙>:我拔根毫毛变个小猴儿<哼>" t1 = Thread(target=task,args=("<哼>",5,2)) print "<老孙>:我再拔根毫毛变个小猴儿<哈>" t2 = Thread(target=task,args=("<哈>",5,4)) t1.start() t2.start() print "<老孙>:不管你们喽,俺老孙去也~~~\n" 20

Python多线程:threading模块 用法II: 定义Thread的子类MyThread,并覆写(重定义)__init__和run方法 class MyThread(threading.Thread): def __init__(self,threadName,delay): threading.Thread.__init__(self) ...... def run(self): ...... 创建MyThread线程对象并调用其start() t = myThread(...) t.start() 21

例eg9_6:threading模块用法 class MyThread(Thread): def __init__(self,tName,n,delay): Thread.__init__(self) self.name = tName self.loopnum = n self.delay = delay def run(self): print self.name + ": 上场...\n" task(self.name,self.loopnum,self.delay) print self.name + ": 退场...\n" ......

作业 1. 实现class queue enqueue(self, item) dequeue(self) isEmpty(self) getLen(self)

作业 2. Create and test a Set class to represent a classical set. Your sets should support the following methods: Set(elements) Create a set (elements is the initial list of items in the set). addElement(x) Adds x to the set. deleteElement(x) Removes x from the set, if present. If x is not in the set, the set is left unchanged. member(x) Returns true if x is in the set and false otherwise. intersection(set2) Returns a new set containing just those elements that are common to this set and set2. union(set2) Returns a new set containing all of elements that are in this set, set2, or both. subtract(set2) Returns a new set containing all the elements of this set that are not in set2. (Section 11.8 Programming Problems 19)