C:Seg故障让我疯了

时间:2011-11-18 09:39:17

标签: 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, 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;
}
}

2 个答案:

答案 0 :(得分:1)

问题可能就是这个循环:

for(x = 0; x < (length-i); x++)

尝试将其更改为:

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

答案 1 :(得分:0)

只有交换才能交换:

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