陈海明 副教授 信息学院 计算机系 http://www.chenhaiming.cn 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系 http://www.chenhaiming.cn.

Slides:



Advertisements
Similar presentations
請按左鍵換頁 為人的藝術 ~善緣貴人多~ 廣結善緣 1. 有什麼觀念,就有什麼行為; 有什麼行為,就有什麼習慣; 有什麼習慣,就有什麼性格; 有什麼性格,就有什麼命運。 2. 對長輩謙虛是本分,對平輩謙虛是修養, 對 晚輩謙虛是高貴,對所有人謙虛是安全。 3. 廣結善緣,圓融的人際關係( EQ ):
Advertisements

成 功 季羡林 广东顺德龙江中学 田乃林. 季羡林 (1911-) 语言学教育家和梵文学者。山东 清平 ( 今临清 ) 人。 1934 年毕业于清华大学西洋文学 系。 1941 年获德国格廷根大学哲学博士学位。 1946 年回国。后任北京大学教授、东方语言文学系主任、 副校长、校务委员会副主任、南亚东南业研究所所.
幼小課程統合與銜接 楊朝祥 中原大學講座教授.
機關改制(含員工權益保障)業務簡介 報告人:王奐寅 100年6月24日.
迷 宫 最短路径 施沈翔.
追求阳光心态 做一个心理健康的人 上海市徐汇区精神卫生中心 吴洪明.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
保良局何壽南小學 學校經驗分享: 學生成長的支援
主講者:林妙容 國立暨南國際大學 輔導與諮商研究所專任助理教授
教师应做学生的心理保健师 (之三) 昆明市心桥心理健康研究所 钱锡安
管理学基本知识.
國中小教師甄試相關事宜 心理的準備 甄試日期 甄試方式 甄試內容 正式教師與代課教師差別 相關問題 關起門來說的問題 結語.
校 長 翁世盟 家長會長 蔡宏奕 教師會長 葉蕙境 敬上
課程內容 態度決定高度 履歷及面試重點提要 履歷 面試服裝及注意事項 性向分析 性向分析測驗.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
C语言实现俄罗斯方块 邓友明( ) 胡文峰( ) 李乐( ) 李博( )
公主的月亮 最近看了一本友人劉清彥譯的書〔公主的月亮〕,極有趣味。 這個難題由一個生病的小公主提出,她嬌憨的告訴疼她的國王,
公主的月亮 最近看了一本友人劉清彥譯的書〔公主的月亮〕,極有趣味。 這個難題由一個生病的小公主提出,她嬌憨的告訴疼她的國王,
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
奥运冠军.
第六章 树和二叉树.
為人的藝術 ~善緣貴人多~ 請按左鍵換頁.
為人的藝術 ~善緣貴人多~ 請按左鍵換頁.
EQ劇場 ~ 李爾王.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
用教学实践解读课程标准.
第三章 堆疊與佇列的基本應用 3-1 簡介堆疊(Stack) 3-2 迷宮問題研究 3-3 佇列(queue)的介紹
第3章 栈和队列 3.1 栈 3.2 队列 3.3 应用.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
佇列 (Queue).
資料結構 第5章 佇列.
Chap 3 堆疊與佇列 Stack and Queue.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
Ch.3 栈和队列 黄刘生 中国科学技术大学计算机系 国家高性能计算中心(合肥)
第3章 栈和队列(二) 1/.
第2章 线性表 线性表抽象数据类型 顺序表 主要知识点 单链表 循环单链表 循环双向链表 静态链表 设计举例.
第十章 C高级程序应用—链表* 10.1链表的基本概念 10.2单向链表 10.3双向链表 10.4应用举例.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
进程操作.
第3章 堆栈和队列 堆栈 堆栈应用 队列 队列应用 优先级队列 主要知识点.
第 3 讲 线性表(一).
第三章 栈与队列 £3.1 栈 £3.3 队列 £3.2 栈的应用举例 £3.1.1 栈的定义 £3.1.2 栈的顺序存储结构
第三章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列.
第三章 栈和队列.
数据结构 Data Structure 中南大学 主讲人:王国军,郑瑾 中南大学信息院计科系
資料結構與C++程式設計進階 堆疊與佇列(Stack & Queue) 講師:林業峻 CSIE, NTU 6/ 21, 2010.
第一章 绪论.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第9章 内部排序 9.1 概述 9.2 插入排序 9.3 快速排序 9.4 选择排序 9.5 归并排序 9.6 基数排序
第三章 栈和队列.
严蔚敏、吴伟民编著 清华大学出版社 学习网站:
第四章 堆疊與佇列 課前指引 資料結構學科中,堆疊(Stack)與佇列是兩種相當典型的抽象資料型態,也是一種有特定進出規則的線性串列應用,主要特性是限制了資料插入與刪除的位置和方法。本章中將會介紹堆疊與佇列的概念與特性,及在計算機領域的各種相關應用。
王玲 第 2 章 线性表 王玲 2019/2/25.
责任与担当 主讲人:李任.
成 功 季羡林.
top b top a a top 空栈 a 进栈 b 进栈 top top e e e top d d d c c c b b b a a
面試的準備 1.
沙田聖本篤堂 家庭牧民小組 簡介. 沙田聖本篤堂 家庭牧民小組 簡介 成立過程: 2000年教區會議期間,甘寶維神父邀請數對活躍於堂區夫婦商討籌辦家庭牧民小組的可行性 2000/01年間舉辦數次「家事談論會」凝聚有意投身服務人士,小組開始成型.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第 六 讲 栈和队列(一).
100學年度上學期 月亮班課程規劃.
香港大學教育應用資訊科技發展研究中心 資訊年代青年自學才能拓展計劃 (S計劃)
第七章  数 组.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
班級經營--實務:疑難雜症 組員: 周雅文 李桂枝 顏純郁 黃福裕 戴曉真
Chapter 2 Entity-Relationship Model
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
第六章 直接成本法.
Presentation transcript:

陈海明 副教授 信息学院 计算机系 http://www.chenhaiming.cn 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系 http://www.chenhaiming.cn

数据结构 线性表 顺序表 链 表 栈 线性结构 顺序表 队列 链 表 顺序表 链 表 任意位置 插入和删除 顶部插入 顶部删除 入栈 出栈 链 表 线性结构 顺序表 顶部插入 顶部删除 入栈 出栈 链 表 顺序表 尾部插入 头部删除 入队列 出队列 链 表

队列 问题1:队作为一种限定性线表,其运算限制是什么? 先进先出(FIFO) 问题2:若进队顺序为1234,能否得到3142的出队顺序? 队头 队尾 队尾(rear):进行插入操作的一端。 队头(front):进行删除操作的一端。 1 2 先进先出(FIFO) 3 问题2:若进队顺序为1234,能否得到3142的出队顺序?

队列 问题3:队列的假溢出指什么? rear=(rear+1)%MSIZE; front=(front+1)%MSIZE 空队 有3个元素 一般情况

队列 问题4:循环队列会有问题吗? 一般情况

循环队列

循环队列 1.计算元素个数num 2.少用一个元素空间

循环队列 #define MAXSIZE 100 typedef struct{ ElemType *base; int front; int rear; }cycleQueue; initQueue(cycleQueue *q){ q->base=(ElemType *) malloc(MAXSIZE*sizeof(ElemType)); if (!q->base) exit(0); q->front=q->rear=0; } EnQueue(cycleQueue *q, ElemType e){ if ((q->rear+1) % MAXSIZE == q->front) return -1; q->base[q->rear] =e; q->rear=(q->rear+1) % MAXSIZE; DeQueue(cycleQueue *q, ElemType *e){ if (q->front == q->rear) return -1; *e=q->base[q->front]; q->front=(q->front+1) % MAXSIZE;

案例分析(栈和队列) 迷宫问题:心理学家把一只老鼠从无顶盖的大盒子的入口处赶进迷宫,迷宫中很多墙壁,对前进造成障碍。在唯一的出口处放置了一块奶酪,吸引老鼠寻找通路以到达出口。

案例分析(栈和队列) 1、假设迷宫为m行n列,则设计maze[m+2][n+2]来表示迷宫 2、入口maze[1][1],出口maze[m][n] 3、maze[i][j]=0或1;0表示通路,1表示不通

案例分析(栈和队列) (x,y) (x,y+1) (x-1,y) (x-1,y+1) (x-1,y-1) (x,y-1) (x+1,y-1)

案例分析(栈和队列) typedef struct{ int x,y; }item; item move[8]; 从某点(x, y)按某方向序号d(0<=d<=7)到达新点(i, j)的方式: i=x+move[d].x; j=y+move[d].y;

案例分析(栈) //栈元素定义 typedef struct { int x,y,d; //横纵坐标及行走方向 }datatype; datatype temp; 入栈顺序

案例分析(栈) //算法思路 (1)栈初始化 (2)将入口坐标(1,1)及到达该点的方向(-1)入栈 (3)while(栈非空) {将栈顶三元组赋值给(x,y,d); 出栈; 求出下一个要试探的方向d++; while(还有剩余试探方向时) { 子算法 } }

案例分析(栈) while(还有剩余试探方向时) { if(d方向可走) 则{ (x,y,d)入栈; 求新点坐标(i,j); 将新点(i,j)切换为当前点(x,y) if(x,y)==(m,n)结束 else 重置d=0 } else d++;

案例分析(栈) temp.x=1;temp.y=1;temp.d=-1; Push(s,temp); //入口点坐标及方向入栈 while(!Empty(s)) { Pop(s,&temp); x=temp.x;y=temp.y;d=temp.d++; //求下一个试探方向 while(d<8) //还有剩余试探方向时 }

案例分析(栈) while(d<8) //还有剩余试探方向时 { i=x+move[d].x; j=y+move[d].y; //求新点坐标 if(maze[i][j]==0) //若路通 { temp.d=d; Push(s,temp); //坐标及方向入栈 x=i;y=j;maze[x][y]=-1; //到达新点 if(x==m&&y==n) return 1; //迷宫有路 else d=0; //重置0 } else d++;

案例分析(队列) 区别:存储搜索路径的方法? //结构数组sq[num]作为队列的存储空间 typedef struct { int x,y; //到达点的坐标 int pre; //前驱点在sq中的坐标 }SqType; SqType sq[num]; int front,rear;

案例分析(队列) front=rear=0; sq[0].x=1; sq[0].y=1; sq[0].pre=-1; //入口点入队 maze[1,1]=-1; while(front<rear) //队非空 { x=sq[front].x; y=sq[front].y; for(d=0;d<8;d++) { i=x+move[d].x; j=x+move[d].y; if(maze[i][j]==0) {rear++; sq[rear].x=i; sq[rear].y=j;sq[rear].pre=front;maze[i][j]=-1;} if(i==m&&j==n) {printpath(sq,rear); //打印迷宫 restore(maze); //恢复迷宫 return 1; } front++; return 0;