- 1、本文档共111页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ElemType getHead(LinkQueue q){ if(q.front==q.rear){ cerrQueue is empty!endl; exit(1); } return q.front-next-data; } void insertElem(LinkQueue q,ElemType e){ QNode* p=new QNode; p-data=e; p-next=NULL; q.rear-next=p; q.rear=p; } ElemType deleteElem(LinkQueue q){ if(q.front==q.rear){ cerrQueue is empty!endl; exit(1); } QNode* p=q.front-next; ElemType e=p-data; q.front-next=p-next; if(q.rear==p) //若链队为空,则需同时使队尾指针指向头结点 q.rear=q.front; delete p; return e; } void traverseQueue(LinkQueue q,void (*visit)(ElemType)){ QNode* p=q.front-next; while(p){ visit(p-data); p=p-next; } coutendl; } main.cpp #include linkqueue.h void print(ElemType e){ coute.d ; } int main(){ LinkQueue q; initQueue(q); ElemType a={3}; ElemType b={5}; insertElem(q,a); insertElem(q,b); coutgetLength(q)endl; traverseQueue(q,print); ElemType c=getHead(q); coutc.dendl; deleteElem(q); coutgetLength(q)endl; traverseQueue(q,print); } 3.4.3 循环队列----队列的顺序表示和实现 方法同线性表一样:用一个数组空间来存放队列中的元素,队头和队尾分设两个指针来指示。 约定: ①头指针指示队头元素在队列中的当前位置,尾指针指示队列中尾元素的下一个位置,当front=rear=0时,队列为空。 ②以队列头指针在队列尾指针的下一个位置上时为队列满的标志。 队列的循环:i=(i+MAXSIZE)% MAXSIZE 循环队列的实现:sqqueue.h #include iostream using namespace std; const int MAXSIZE=3; struct ElemType{ int d; }; struct SqQueue{ ElemType* base; int front; int rear; }; void initQueue(SqQueue q); void clearQueue(SqQueue q); bool isEmpty(SqQueue q); bool isFull(SqQueue q); int getLength(SqQueue q); ElemType getHead(SqQueue q); bool insertElem(SqQueue q,ElemType e); ElemType deleteElem(SqQueue q); void traverseQueue(SqQueue q,void (*visit)(ElemType)); sqqueue.cpp #include sqqueue.h void initQueue(SqQueue q){ q.base=new ElemType[MAXSIZE]; if(!q.base) exit(1); q.front=q.rear=0; } void clearQueue(SqQueue q){ q.front=q.rear=0; } bool isEmpty(SqQueue q){ return q.front==q.rear; } bool isFull(SqQueue q){ return (q.rear+1)%MAXSIZE==q.front; } int getLength(SqQueue q){ return (q.rear-q.front+MAXSIZE)%MAXSIZE; } ElemType getHead(SqQueue q){
文档评论(0)