头文件:seqQueue.h
源文件:
seqQueue.c
源文件:dynamicArray.c
源文件:01队嫌吵列_顺序存储.c
打印结果:
头文件:LinkQueue.h
源文件:LinkQueue.c
打印结果芹桐侍:
打印结果:
就几个明显的错误提一下1. 函数 enterqueue中
s->queue[s->tear]
这句没有实际 *** 作,估计应该是 s->queue[s->tear] = x用于在队列最后添加一个新的元素
2. 主芦此函数中,大约21行左右
for(j=0j<kj++)
{
deletequeue(l,e)
if(gethead(l,f)==0) // 这里多了一个分号,导致判断后没有任何动作可之心,删之
*f=0
*e=*e+*f
enterqueue(l,*e)
}
3. 主函数大约30行左右,打印输出
for(j=0j<l->tearj++,p++) // 这里不可用i作循环变量,否则干扰外循环i
printf("%d ",*p)
4. deletequeue(l,e)
if(gethead(l,f)==0) // 多了分号
*f=0
*e=*e+*f
从语句目的看,是希望从deletequeue和gethead函数中,得到e或者f的地址,但是 1)由于传递的是指针的值陪正迅,所以即使函数中修改了,主函数中无法得到新的地址;2)这两个函数体中,并没有设置地址的代码,总之,e 和 f 是没有可 *** 作地址的
5. 最重要一点,没有看懂解题思路是什么。
即使按照删一个节点,再添两个节点的想法,也应该从队列的后面开始,这样间隔相加,并放在后移一个位置上,不至于影响后续计算。而这段程序从前开始修改队清瞎列,那新的节点产生,不就干扰后面的计算了?
所以,建议先说明一下解题思路,这样便于解决程序中的各种问题。
给你的头文件,里面包括队列的初始化裂昌腔,判断空队列,插入删迅大除节点,清空队肆衫列 *** 作。使用时候把头文件加载到你的程序中就可以了。#define QueueSize 100\x0d\x0atypedef struct Squeue\x0d\x0a{\x0d\x0a DataType queue[QueueSize]\x0d\x0a int front,rear\x0d\x0a}SeqQueue\x0d\x0avoid InitQueue(SeqQueue *SQ)\x0d\x0a{\x0d\x0a SQ->front=SQ->rear=0\x0d\x0a}\x0d\x0aint QueueEmpty(SeqQueue SQ)\x0d\x0a{\x0d\x0a if(SQ.front==SQ.rear)\x0d\x0a return 1\x0d\x0a return 0\x0d\x0a}\x0d\x0aint EnterQueue(SeqQueue *SQ,DataType x)\x0d\x0a{\x0d\x0a if(SQ->rear==QueueSize)\x0d\x0a return 0\x0d\x0a SQ->queue[SQ->rear]=x\x0d\x0a SQ->rear+=1\x0d\x0a return 1\x0d\x0a}\x0d\x0aint DeleteQueue(SeqQueue *SQ,DataType *e)\x0d\x0a{\x0d\x0a if(SQ->front=SQ->rear)\x0d\x0a return 0\x0d\x0a else\x0d\x0a {\x0d\x0a *e=SQ->queue[SQ->front]\x0d\x0a SQ->front+=1\x0d\x0a return 1\x0d\x0a }\x0d\x0a}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)