cLOGONOIP基础数据结构江涛队列、栈、堆概念与应用yourfamilysiteyoursitehereLOGO目录栈栈队列队列堆堆3数组数组124目录yourfamilysiteyoursitehereLOGO数组的特性数组的特性数组•数组(array)的元素(element)或项(item)的类型是相同的•数组的大小是固定的、静态的、连续的•数组对某元素的存取是O(1)时间•数组的插入、删除操作是O(n)时间yourfamilysiteyoursitehereLOGO“订制”数组“订制”数组数组•由于数组通常的插入、删除操作是O(n)时间的,在某些特定的条件下就显得低效了
因此我们通过对数组元素操作的限制,来达到操作的高效---算法优化的突破点
•常见的“订制”数组有:栈、队列、堆等
它们操作的时间效率都很高
•注:虽然栈、队列、堆可以不用数组实现,但NOIP的实践中,用数组更简单实用
yourfamilysiteyoursitehereLOGO栈(stack)的图示栈(stack)的图示栈yourfamilysiteyoursitehereLOGO栈的特性栈的特性栈•信息学中的栈一般就是用数组实现•栈(stack)是后进先出(last-in-first-out,LIFO)或先进后出(FILO)的•栈有三个基本操作压入(push),弹出(pop),取数(getTop)操作都为O(1)时间•栈有一个计数器counter或栈顶指针yourfamilysiteyoursitehereLOGO栈的实现样例Pascal代码栈的实现样例Pascal代码栈constmaxn=1000;varstack:array[1
maxn]ofinteger;counter:integer;Procedurepush(x:integer);begin//入栈inc(counter);sta