首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

非常着急的一个有关问题

2012-06-08 
非常着急的一个问题C/C++ codetypedef struct QNode{QElemType dataQNode *next}*QueuePtrtypedef stru

非常着急的一个问题

C/C++ code
typedef struct QNode{    QElemType data;    QNode *next;}*QueuePtr;typedef struct{    QueuePtr front;    QueuePtr rear;}LinkQueue;    LinkQueue q[5];void InitQueue(LinkQueue Lq[5])    //置空队列{    for(int i=0;i<5;i++)    {        Lq[i].rear=Lq[i].front=new QNode;        Lq[i].front->next=NULL;        Lq[i].front->data.ArrivalTime=0;        Lq[i].front->data.Duration=0;    }}void EnQueue(LinkQueue Lq, int Occurtime, int durtime)    //将发生在Occurtime持续durtime时间的事件加入队列Lq{    QueuePtr p=new QNode,q=Lq.front->next,k=new QNode;    p->data.ArrivalTime=Occurtime;    p->data.Duration=durtime;    p->next=NULL;    if(Lq.front->next!=NULL)    {        while(q!=NULL)        {            k=q;            q=q->next;        }        k->next=p;        Lq.rear=p;    }    else    {        Lq.rear->next=p;        Lq.rear=p;    }}int QueueLength(LinkQueue Lq)    //返回队列Lq的长度{    int length=0;    QueuePtr p=Lq.front->next;    while(p)    {        length++;        p=p->next;    }    return length;}int Minimum(LinkQueue *q)    //返回长度最短的队列{    int Lq_time[5]={0};                        //记录所有队列耗时    for(int i=1;i<5;i++)    {        if(q[i].front->next!=NULL)        {            QueuePtr tempQ=new QNode;            tempQ=q[i].front->next;            do             {                Lq_time[i]=tempQ->data.ArrivalTime+tempQ->data.Duration;                tempQ=tempQ->next;            } while (tempQ->next!=NULL);        }        else            Lq_time[i]=0;    }    int min=Lq_time[1];    int min_i=1;    for(int i=1;i<4;i++)    {        if(min>Lq_time[i+1])        {            min=Lq_time[i+1];            min_i=i+1;        }    }    return min_i;}int QueueLength(LinkQueue Lq)    //返回队列Lq的长度{    int length=0;    QueuePtr p=Lq.front->next;    while(p)    {        length++;        p=p->next;    }    return length;}int main(){        int i=Minimum(q);    EnQueue(q[i],en.OccurTime,durtime);    if (QueueLength(q[i])==1)        {……}        return 0;}

运行上述代码时,在main里面的if那里就内存冲突了,单步调试发现是存入队列的元素在q[i]里面已经不存在了,求解……

[解决办法]
int QueueLength(LinkQueue Lq) ==> int QueueLength(LinkQueue* Lq)

热点排行