
msg_remove_queue 함수는 메시지를 삭제하는 데 사용되는 큐에서 메시지를 제거하는 함수입니다. 이 함수는 메시지를 삭제하고자 하는 큐를 지정하여 사용할 수 있습니다.
이 함수의 동작 원리는 다음과 같습니다.
1. 메시지를 삭제하고자 하는 큐를 지정합니다.
2. 큐에서 메시지를 검색합니다.
3. 메시지가 존재하는지 확인합니다.
4. 메시지가 존재하면 큐에서 메시지를 제거합니다.
이 함수를 사용하는 방법에 대한 예시 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
// 메시지 큐 구조체
typedef struct {
char* msg;
struct Node* next;
} Node;
// 메시지 큐
typedef struct {
Node* head;
Node* tail;
} Queue;
// 메시지 큐 생성
Queue* createQueue() {
Queue* q = (Queue*)malloc(sizeof(Queue));
q->head = NULL;
q->tail = NULL;
return q;
}
// 메시지 큐에 메시지 추가
void enqueue(Queue* q, char* msg) {
Node* node = (Node*)malloc(sizeof(Node));
node->msg = (char*)malloc(strlen(msg) + 1);
strcpy(node->msg, msg);
node->next = NULL;
if (q->tail == NULL) {
q->head = node;
q->tail = node;
} else {
q->tail->next = node;
q->tail = node;
}
}
// 메시지 큐에서 메시지 삭제
void msg_remove_queue(Queue* q, char* msg) {
Node* current = q->head;
while (current != NULL) {
if (strcmp(current->msg, msg) == 0) {
if (current == q->head) {
q->head = current->next;
if (q->head == NULL) {
q->tail = NULL;
}
} else {
Node* prev = q->head;
while (prev->next != current) {
prev = prev->next;
}
prev->next = current->next;
if (prev->next == NULL) {
q->tail = prev;
}
}
free(current->msg);
free(current);
return;
}
current = current->next;
}
}
int main() {
Queue* q = createQueue();
enqueue(q, "메시지 1");
enqueue(q, "메시지 2");
enqueue(q, "메시지 3");
msg_remove_queue(q, "메시지 2");
Node* current = q->head;
while (current != NULL) {
printf("%sn", current->msg);
current = current->next;
}
return 0;
}
이 예시 코드에서는 메시지 큐를 생성하고 메시지를 추가한 후, 메시지 큐에서 메시지를 삭제하는 방법을 보여줍니다. 메시지 큐에서 메시지를 삭제하는 함수인 msg_remove_queue 함수는 메시지를 삭제하고자 하는 큐를 지정하여 사용할 수 있습니다.
2025-03-17 02:49