Whi-Wolf 2023-10-09 20:04 采纳率: 33.3%
浏览 2

链队列查找循环无效,如何解决

错误在于for这一句执行出问题,前一个sb能打后一个就没了,遍历感觉也没毛病啊,问题出在哪?


//元素
typedef struct{
int num;
int time;
}elemtype;

//链结点
typedef struct{
elemtype data;
struct Node* next;
}Node;

//链队列
typedef struct{
Node* front;
Node* rear;
int size;
}queue,*linkq;


//变形出队,查找是否在队列中
int outqueue(linkq Q,elemtype e){
Node* p;
printf("sb");
for(p=Q->front->next;p->data.num!=e.num&&p!=NULL;p=p->next);
printf("sb");
·
·
··

问题在于for这一句执行出问题,前一个sb能打后一个就没了,遍历感觉也没毛病啊,问题出在哪?

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-10-09 20:12
    关注

    问题出在for循环中的条件判断部分。在循环中,应该使用逻辑与运算符(&&)而不是逻辑或运算符(||)。

    以下是修正后的代码:

    int outqueue(linkq Q, elemtype e) {
        Node* p;
        printf("sb");
        for (p = Q->front->next; p != NULL && p->data.num != e.num; p = p->next);
        printf("sb");
    
        // 其他代码...
    }
    

    修正后的代码将正确遍历链队列,直到找到目标元素或到达队列尾部。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 10月9日