diff --git a/queue.c b/queue.c
new file mode 100644
index 0000000000000000000000000000000000000000..b20a6ad91b9407b4552ab5f210e22e2a9e492ff6
--- /dev/null
+++ b/queue.c
@@ -0,0 +1,97 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct Node {
+    int data;
+    struct Node* next;
+} Node;
+
+typedef struct Queue {
+    Node* rear;
+    Node* front;
+} Queue;
+
+
+Queue* insert(Queue* q) {
+    int data;
+    Node* new = (Node*)malloc(sizeof(Node));
+    printf("Masukkan data: "); scanf("%d", &data);
+    new->data = data;
+    new->next = NULL;
+
+    if(q->front == NULL) {
+        q->rear = q->front = new;
+    }
+    else {
+        q->rear->next = new;
+        q->rear = new;
+    }
+
+    return q;
+}
+
+Queue* delete(Queue* q) {
+    if(q->front == NULL) {
+        printf("Tidak ada data\n");
+        return q;
+    }
+    Node* ptr = q->front;
+
+    q->front = q->front->next;
+    free(ptr);
+    return q;
+}
+
+Queue* display(Queue* q) {
+    if(q->front == NULL) {
+        printf("Tidak ada data\n");
+        return q;
+    }
+
+    int counter = 1;
+    Node* ptr = q->front;
+    while(ptr != q->rear) {
+        printf("%d. %d\n", counter++, ptr->data);
+        ptr = ptr->next;
+    }
+    printf("%d. %d\n", counter++, ptr->data);
+    return q;
+
+}
+int peek(Queue* q) {
+    return q->front->data;
+}
+
+int main() {
+    Queue* q;
+    q->rear = q->front = NULL;
+    int opt;
+    do {
+        printf("\n\nMain Menu\n");
+        printf("1. insert Queue\n");
+        printf("2. Pop Queue\n");
+        printf("3. Peek Queue\n");
+        printf("4. Display Queue\n");
+        printf("5. Exit\n");
+
+        scanf("%d", &opt);
+        int temp;
+        switch(opt) {
+            case 1:
+                q = insert(q);
+                break;
+            case 2:
+                q = delete(q);
+                break;
+            case 3:
+                temp = peek(q);
+                printf("Data: %d\n", temp);
+                break;
+            case 4:
+                q = display(q);
+                break;
+        }
+    } while(opt != 5);
+
+    return 0;
+}
\ No newline at end of file