小编Mar*_*ark的帖子

2个明显相同的代码!一个编译,一个抛出seg错误

我是一个初学的C程序员,只是编写一个涉及队列操作的练习题,在调试时,我遇到了以下场景:

代码示例1:

int dequeue (struct queue_node * Q) {

    struct queue_node * curr = Q->next;
    if(!Q->next)
            return -2;
    else
    {
            int s = Q->next->v_no;
            Q->next = curr->next;
            free(curr);
            return s;
    }

}
Run Code Online (Sandbox Code Playgroud)

代码示例2(以稍微修改的方式编写的相同函数):

int dequeue (struct queue_node * Q) {

    struct queue_node * curr = Q;
    if(!curr->next)
            return -2;
    else
    {
            int s = curr->next->v_no;
            Q->next = curr->next->next;
            free(curr->next);
            return s;
    }

}
Run Code Online (Sandbox Code Playgroud)

预定义的数据结构如下:

struct queue_node {

    int v_no;
    struct queue_node * next;

};

void enqueue (struct queue_node …
Run Code Online (Sandbox Code Playgroud)

c queue struct

3
推荐指数
1
解决办法
128
查看次数

标签 统计

c ×1

queue ×1

struct ×1