- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表、堆栈和队列
课 后 作 业 49页2-1 49页2-8 50页2-17 * 每次出栈的总是最后插入的元素 队列的顺序存储 ●存放队列元素的数组: T qlist[MaxQSize] front 队首元素的数组下标 rear (要入队元素的下标) 队尾元素的下标加1 …… a1 a2 a3 front rear [例] 等待处理某作业进队、出队情况。 front=0 rear=1 …… a0 0 1 2 MaxQsize-1 a0进队 …… 0 1 2 MaxQsize-1 front=0 rear=0 初始状态 插入: rear=rear+1 front=0 …… a0 a1 a2 0 1 2 MaxQsize-1 a1 a2 进队 rear=3 front=1 …… a1 a2 0 1 2 MaxQsize-1 a0出队 rear=3 ● 删除队首元素的方法1:令front=front+1 front=3 …… 0 1 2 MaxQsize-1 a1 a2 出队 rear=3 0 1 2 MaxQsize-1 rear=n front=n-3 …… an-3 an-2 无法利用的空间 x ● 删除队首元素方法2 :元素向前移动,front总等于0 …… a2 0 1 2 MaxQsize-1 a0出队 front=0 rear=2 a1 front=0 …… an-3 an-2 0 1 2 MaxQsize-1 rear=3 x 0 1 2 front= n-3 …… an-3 an-2 MaxQsize-1 rear= n-1 ● 删除队首元素的方法3:循环队列 删除时 front 顺时针移动一位 rear=n-1 front=n-2 …… an-2 0 1 2 MaxQsize-1 0 1 2 front= n-3 …… an-3 an-2 MaxQsize-1 rear= n-1 ● 删除队首元素的方法3:循环队列 插入元素 x: front= n-3 …… an-3 an-2 0 1 2 MaxQsize-1 rear=0 x rear顺时针移动一位 front= n-3 …… an-3 an-2 0 1 2 MaxQsize-1 rear= n-1 ● 循环队列:很好的解决了(1)(2)中存在的问题。 n-3 rear= n-1 an-3 an-2 0 . 1 . . . front=n-3 n-2 插入元素 x: front=n-3 …… an-3 an-2 0 1 2 MaxQsize-1 rear=0 x n-3 an-3 rear=0 an-2 0 . 1 n-1 . . . front=n-3 n-2 x rear顺时针移动一位 rear = (rear+1) MOD MaxQSize 删除队首元素:front顺时针移动一位 front = (front+1) MOD MaxQSize; rear 0 front=9 . 1 . . . C D 删除C rear front=0 0 . 1 . . . D 采用环状模型来实现队列,各数据成员的意义如下: front指定队首位置,删除一个元素就将front顺 时针移动一位; rear指向元素要插入的位置,插入一个元素就将rear顺时针移动一位; count存放队列中元素的个数,当count等于MaxQSize时,不可再向队列中插入元素。 队空:count=0 队满:count= MaxQSize 顺序队列类AQueue的类声明 template class T class AQueue { private: int front ; // 队首所在数组元素下标 int rear ; // 新元素要插入的位置(下标) int count ; // 队列中元素个数 T *QArray ; // 存放队列元素的数组 int Size ; // 存放队列的数组规模 public: AQueue ( int MaxQueueSize = 10 ) // 构造函数 ~AQueue ( void ) { delete [ ] QArray ; } // 析构函数 bool QInsert ( const T item ) // 向队尾插入元素item bool QDelete ( T item ) ; // 删除队首元素并将该元素
原创力文档


文档评论(0)