1、4.判队满:QUeUeFUll()5.入队:AddO6.出队:DeIeteO7.display()各函数关系如下:Ini tQueue()QueueEmptyOQueueFuI1()Add()Ma inDeIete() display()3、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主 程序和模块都需要代码。(1)循环队列#defi ne maxle n 10typedef StrUCtint data maxle n;int front; in t rear;SeqQueue;(2)队列基本算法SeqQUeUe *ln itQueue(SeqQueue *q)
2、/ 建立一个空循环队列q=(SeqQueue *)malloc(sizeof (SeqQueue);q-fro nt=0;rear=0;return q;int QueueFull (SeqQUeUe *q) / 判断队列是否为满if (q-fron t=(q-rear+1)%maxle n)return 1;else return 0;int QueueEmpty(SeqQueue *q)rear=q-front)void Add (SeqQueue *q,int x) /if(!QueueFull(q)rear=(q-rear+1)%maxlen; q-dataq-rear=x;else
3、printf (queue full);void Delete(SeqQueue *q) /if (!QueueEmpty(q) q-front=(q-front+1)%maxlen;else printf (queue Empty(3)用display()函数输出循环队列元素void display(SeqQueue *q)int i;if(q-front!=q-rear)printf( 输出循环队列元素: i=q-front;doi=(i+1)%maxlen;%d,q-datai); while(i!rear);else 队列为空!/ 判断队列是否为空入队出队/输出循环队列q的元素/循环队
4、列非空,输出队列元素(4)在主函数中先往队列里输入 5 个元素,输出,看入队是否成功,然后出队, 再调用 display ()函数看是否出队。int main()SeqQueue *q;/建立空循环队列/入队5个元素/输出循环队列元素/把5个元素出队/再入队一个元素/再输出循环队列元素int i,y;q=ln itQueue(q);Printf(请输入5个元素for(i=0;i5;i+)SCan f(, &y);Add(q,y); display(q); for(i=0;DeIete(q);n请输入1个元素 SCa nf(display(q); return 0;4、调试分析编译无错误5、用户
5、使用说明程序名为class1.exe ,在DEBUGt件夹里面。运行环境 ViSUaI C+ 6.0 。6、测试结果请输入吕个元素1 2 3 4 5i由循环罠列元素:12345请 l7E6输出循环队列元索:6Press any key to COntinUe7、附录#i nclude #in clude typedef structint data maxlen;int rear;SeqQueue *InitQueue(SeqQueue *q) / 建立一个空循环队列 front=0;int QueueFull (SeqQueue *q) / 判断队列是否为满front=(q-rear+1)%
6、maxlen) return 1;void Add (SeqQueue *q,int x)QueueFull(q) q-void Delete(SeqQueue *q)/ 入队/ 出队/ 输出循环队列 q 的元素/ 循环队列非空,输出队列元素 i=q- printf(while(i!q=InitQueue(q); 请输入 5 个元素 scanf(,&Delete(q);n 请输入 1 个元素 scanf( display(q);/ 建立空循环队列/ 入队 5 个元素/ 输出循环队列元素/ 把 5 个元素出队/ 再入队一个元素/ 再输出循环队列元素(2)实现链队列的入队和出队操作1.问题分析本程
7、序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作完成该实验需要以下 4 个子任务:(1定义一个链队列的存储结构,定义链 队列的基本算法。14 在主函数中完成操作为了实现上述程序功能, 需要:11声明一个链队列 12定义出链队列的基本算法,13 通过键盘输入 5 个整数,入队,出队 14在主函数中先往队列里输入 5 个元 素,然后入队,输出,看入队是否成功,然后出队,再调用 display ()函 数看是否出队。2) 本程序包含 6 个函数:1主函数 main() InitQueue()3.判对空 : QueueEmpty()4.入队:Addo5.出队:DeIeteo6.disp
8、lay()SetQueue()Add()DeIete()display()4、详细设计(1)链队列typedef StrUCt no deint data;StrUCt node *n ext;Li nkList;Lin kList *fron t,*rear;Lin kQueue;Lin kQueue *q;Lin kQueue *SetQueue() / 建立一个空链队列q=(L in kQueue *)malloc(sizeof (Lin kQueue);fron t=(L in kList *)malloc(sizeof(L in kList);front-n ext=NULL;rea
9、r=q-fro nt;int QueueEmpty(LinkQueue *q) if (q-LinkQueue *Add (LinkQueue *q,int x)LinkList *p;p=(LinkList *)malloc(sizeof (LinkList);p-data=x;next=NULL;rear-next=p;rear=p;LinkQueue *Delete(LinkQueue *q)QueueEmpty(q) p=q-next;next=p- if(p-next=NULL)q- free(p);(3)用display()函数输出链队列元素 void display(LinkQu
10、eue *q)p=q-if(p!=NULL) 输出链队元素 while(p! printf(%2d,p-data); p=p-else printf(n 链队为空 / 输出链队列的元素然后出队,/建立空链队列/看是否出队成功(4)在主函数中先往队列里输入 5个元素,输出,看入队是否成功, 再调用display ()函数看是否出队。int i,y=O;SetQueue();display(q);n请输入5个元素return 0;4、 调试分析5、 用户使用说明程序名为class12exe ,在DEBUGt件夹里面。6、 测试结果链队为穹诸输入5个元索1 2 3 4 5输陆元壷1 2 3 4 5麓
11、队为Press any key to COntinlle#include LinkQueue *Add (LinkQueue *q,int x) / 入队 p=(LinkList *)malloc(sizeof (LinkList); p-LinkQueue *Delete(LinkQueue *q) / 出队void display(LinkQueue *q) while(p!int i,y=0;display(q) ;n 请输入 5 个元素 / 建立链队列/ 看是否出队成功实验题目2:写出下列程序段的输出结果,并通过程序运行来验证 1问题分析(定义一个循环队列的存储结构,定义队列的基本算法
12、。定义一个Print ()函数实现程序在主函数调用print()函数看是否出队。3)本程序包含8个函数:8.GetHeado各函数关系如下:GetHead()Print()5、详细设计Char data maxle n;SeqQUeUe *lni tQueue(SeqQueue *q) / 建立一个空循环队列int QUeUeEmPty(SeqQUeUe *q) / 判断队列是否为空char GetHead(SeqQueue *q) /QueueEmpty(q)return q-data(q-front+1)%maxlen;void Add (SeqQueue *q,char x) /(3 )
13、用 print() 函数验证程序void print(SeqQueue *q)char x,y,t;x=e;y=cAdd(q,hrx=GetHead(q);Add(q,x);awhile (QueueEmpty(q)=0) y=GetHead(q); Delete(q);%c,y);,x);取栈顶元素(4)在主函数中调用Print ()函数验证程序 q=ln itQueue(q); Prin t(q);程序名为CIaSS2.exe ,在DEBUGt件夹里面。I I LZ VL J V-3i2L -U _ XLZJ kJ U 弓 u IlJI J 4_ JKJcharPress any key
14、to COntinue#include VStdiO.h#include VStdIib.h#define maxlen 10 typedef StrUCtChar data maxlen;/建立一个空循环队列SeqQUeUe *lnitQueue(SeqQueue *q)int QueueFull (SeqQueue *q)/ 判断队列是否为满int QueueEmpty(SeqQueue *q) if (q-front) return 1;char GetHead(SeqQueue *q)/ 取栈顶元素 else printf(void Add (SeqQueue *q,char x) / 入队 void Delete(SeqQueue *q) / 出队 if (!void print(SeqQueue *q) x= Add(q,int
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1