私はこれを解決しようと懸命に努力してきましたが、まだ成功していません.次のようなデータ構造体があります(実際には非常に複雑で、議論のために単純化しています):
typedef struct node{
struct node* next;
void* arg;
}node_t;
typedef struct queue{
node_t* head;
node_t* tail;
}queue_t;
addQ(queue_t*ptr , int data)
{
queue_t* q = ptr;
node_t * n = malloc(sizeof(*n));
n->arg = data;
n->next = NULL;
if(NULL == q->head){
q->head = q->tail = n;
return ;
}
q->tail->next = n;
q->tail = q->tail->next;
}
今、私は同じ値のノードを削除したいです (私はいくつかの方法を試しましたが、まだ成功していません)、参考のためにこのシーケンスを検討してください:
addQ(q, 12);
addQ(q, 12);
addQ(q, 4);
addQ(q, 12);
addQ(q, 12);
addQ(q, 14);
addQ(q, 12);
addQ(q, 12);
値が 12 のすべてのノードを削除します。