どこを説明すればいいかわからないので適宜回答します
#include <stdio.h>
#include<stdlib.h>
#define _CRT_CECURE_NO_WARNING
struct node_t {
int data;
struct node_t *next;
};
typedef struct node_t Node;
Node *head = NULL;
Node *tail = NULL;
Node *ND;
int count=0;
Node *new_node(int data) {
Node *nd = (Node *)malloc(sizeof(Node));
if (nd == NULL) {
printf("malloc for NODE* failed.\n");
exit(1);
}
nd->data = data;
nd->next = tail;
ND = nd;//return ndだとうごかせない?
return 0;
}
void enqueue(Node *node) {
Node *last = (Node *)malloc(sizeof(Node));
if (head == NULL) {
last->data = ND->data;
last->next = tail;
head = ND;
last = ND;
}else {
while (last->next != NULL)
last = last->next;
last->next = ND;
}
count++;
}
Node *dequeue() {
Node *p = head;
head = head->next;
return p;
}
void print_queue(void) {
Node *e = (Node *)malloc(sizeof(Node));
for (int i = 0; i < count; i++) {
printf("| %d ", e->data);
}
printf("\n");
}
int main(void)
{
Node *e;
printf("enqueue(new_node(1000))\n");
enqueue(new_node(1000));
printf("enqueue(new_node(2000))\n");
enqueue(new_node(2000));
printf("enqueue(new_node(3000))\n");
enqueue(new_node(3000));
printf("enqueue(new_node(4000))\n");
enqueue(new_node(4000));
printf("enqueue(new_node(5000))\n");
enqueue(new_node(5000));
print_queue();
printf("\n");
e = dequeue();
printf("dequeue-> %d\n", e->data);
print_queue();
free(e);
e = dequeue();
printf("dequeue-> %d\n", e->data);
print_queue();
free(e);
e = dequeue();
printf("dequeue-> %d\n", e->data);
print_queue();
free(e);
free(head);
return 0;
}