首页 > 编程知识 正文

拓扑排序c语言代码,c语言常见数据结构有哪些

时间:2023-05-05 01:16:28 阅读:132325 作者:3321

循环队列是将队列存储空间中的最后一个位置旋转到第一个位置,以形成逻辑循环空间,队列可以重用。 在循环队列结构中,使用存储空间的最后一个位置,在进入队列操作时,如果存储空间的第一个位置为空,则可以将第一个位置(即存储空间的第一个位置)添加到队列的最后一个元素。

循环队列可以更容易地防止伪溢出的发生,但队列的大小是固定的。

在循环队列中,如果队列为空,则有front=rear;如果所有队列空间都已满,则有front=rear。 为了区分这两种情况,规定循环队列最多只能有MaxSize-1一个队列元素,如果循环队列中只有一个空存储单元,则队列已满。 因此,队列为空的条件是front=rear,队列满的条件是front=(rear 1) %MaxSize。

# include stdio.h # include stdlib.h # define maxsize5typedefstructqueue { intfornt; int rear; int data[MAXSIZE]; (}队列; //初始化循环队列queue*initqueue(({queue*q=) queue* ) malloc (sizeof ) queue ) }; Q-fornt=Q-rear=0; 返回q; //判断小组为intisfull(queue*q ) if ) ) q-rear1) %MAXSIZE==Q-fornt ) {return 1; }else {return 0; }//intenqueue(queue*q,int data ) queue * q=(queue * ) malloc (sizeof ) queue ) ); if(isfull(q ) ) {return 0; }else {Q-data[Q-rear]=data; q-rear=(q-rear1) % MAXSIZE; 返回1; (//判断为空的intisempty ) queue*q ) if ) q-fornt==q-rear ) {return 1; }else {return 0; }//intdequeue(queue*q ) if (isempty ) q ) ) {return -1; }else {int data=Q-data[Q-fornt]; q-fornt=(q-fornt1 ) % MAXSIZE; 返回数据; ()//队列voidprintqueue (queue * q ) )//要知道队列中当前有多少个元素int length=(q-rear-q-fornt % maxsize ) maxsize; int索引=q-fornt; for(intI=0; i length; I ) printf('%d-',Q-data[index]; 索引=(索引1 ) %MAXSIZE; } printf (空(n ); }intmain(void ) {Queue* Q=initQueue ); enqueue(q,1 ); enqueue(q,2 ); enqueue(q,3 ); enqueue(q,4 ); 打印队列(q; dequeue(q; 打印队列(q; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。