数据结构知识点总结 下载本文

尾指针始终指向队列尾指针的下一个位置

在栈满的情况下,不能作进栈运算,否则产生“上溢”。

队列:1.什么是队列?也是一种特殊的线性表(插入在表的一端,删除在表的另一端)队列:先进先出 区别于线性表:插入、删除在同一端。

2.队列的操作: 1.插入。

判别队列空间“空”或“满”

a.另设一个标志位以区别队列“空”或“满”

b.少用一个元素空间,约定以“队列头指针在队列尾指针的下一个位置(指环状的下一位置)”上作为队列呈“满”状态的标志 总结:若Rear>Front,元素个数为Rear-Front;若Rear

int Queue Insert(Q[],front,rear,x) {

if(rear>=QMAX) {

printf(\return 0;

} else { } } 2.删除:

ElemType Queue Delete(Q[],front,rear) {

if(rear<=front) { } else { } }

以上为错误算法,rear

front=front+1; printf(\return 0; rear=rear+1; Q[rear]<=x; return 1;

针重叠“假满”∵删除/插入一次无事,N次则无用了。插入满了只能删除,rear、front均在尾,插入为满,删除为空∴成为了无用队列。

正确的队列插入与删除算法如下: int Queue Insert(Q[],front,rear,x) {

if((rear+1)mod QMAX=front) { } else {

mod QMAX Q[rear]<=x; printf(\return 0;