C 塞格故障快把我逼疯了

C 塞格故障快把我逼疯了,c,segmentation-fault,C,Segmentation Fault,我已经调试了几个小时,我真的完全迷路了。救命啊! 注意:程序中的代码比这个多得多,但其余的都很好,所以我尝试提取所有相关的代码。如果你发现有什么遗漏,请告诉我 typedef struct cellT { queueElementT value; struct cellT *link; } cellT; struct queueCDT { cellT *head; cellT *tail; }; void ReverseQueue(queueADT queue){ int i, x, len

我已经调试了几个小时,我真的完全迷路了。救命啊! 注意:程序中的代码比这个多得多,但其余的都很好,所以我尝试提取所有相关的代码。如果你发现有什么遗漏,请告诉我

typedef struct cellT {
queueElementT value;
struct cellT *link;
} cellT;

struct queueCDT {
cellT *head;
cellT *tail;
};

void ReverseQueue(queueADT queue){
int i, x, length;
length = QueueLength(queue);
cellT *beg, *end;
queueElementT temp;

beg = queue->head;

for(i = 0; i < (length/2); i++){
    end = beg;
    for(x = 0; x < (length-i); x++)
        end = end->link;

    /* POINTERS REMAIN, VALUES SWAPPED */
    temp = beg->value;
    beg->value = end->value; /* gdb says issue happens here */
    end->value = temp;
}
}
typedef结构单元{
queueElementT值;
结构单元*链接;
}塞尔特;
结构队列{
塞尔特*头;
细胞尾;
};
无效反向队列(队列ADT队列){
int i,x,长度;
长度=队列长度(队列);
塞尔特*贝格,*结束;
队列元素温度;
beg=队列->头部;
对于(i=0;i<(长度/2);i++){
结束=乞讨;
对于(x=0;x<(长度-i);x++)
结束=结束->链接;
/*指针保留,值交换*/
温度=beg->数值;
beg->value=end->value;/*gdb说问题发生在这里*/
结束->值=温度;
}
}

问题可能是这个循环:

for(x = 0; x < (length-i); x++)
for(x=0;x<(长度-i);x++)
尝试将其更改为:

for(x = 0; x < (length-i) && end->link != NULL; x++)
for(x=0;xlink!=NULL;x++)

问题可能是这个循环:

for(x = 0; x < (length-i); x++)
for(x=0;x<(长度-i);x++)
尝试将其更改为:

for(x = 0; x < (length-i) && end->link != NULL; x++)
for(x=0;xlink!=NULL;x++)

只有在有东西要交换时才交换:

if (beg && end) {
  temp = beg->value;
  beg->value = end->value; 
  end->value = temp;
}

只有在有东西要交换时才交换:

if (beg && end) {
  temp = beg->value;
  beg->value = end->value; 
  end->value = temp;
}

如果你在linux下开发,试试如果你在linux下开发,试试