我是一个初学的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)