66
7.c
Normal file
66
7.c
Normal file
@@ -0,0 +1,66 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct Node node;
|
||||
struct Node {
|
||||
int id;
|
||||
struct Node *next;
|
||||
};
|
||||
|
||||
typedef struct Queue queue;
|
||||
struct Queue {
|
||||
node *head;
|
||||
node *tail;
|
||||
};
|
||||
|
||||
int peek(queue *q) { return q->head->id; }
|
||||
|
||||
void insert(queue *q, int id) {
|
||||
node *new = malloc(sizeof(node));
|
||||
new->id = id;
|
||||
new->next = NULL;
|
||||
|
||||
if (q->tail)
|
||||
q->tail->next = new;
|
||||
else
|
||||
q->head = new;
|
||||
|
||||
q->tail = new;
|
||||
}
|
||||
|
||||
void delete (queue *q) {
|
||||
if (!q->head)
|
||||
return;
|
||||
|
||||
node *next = q->head->next;
|
||||
|
||||
free(q->head);
|
||||
|
||||
q->head = next;
|
||||
|
||||
if (!q->head)
|
||||
q->tail = NULL;
|
||||
}
|
||||
|
||||
void display(queue *q) {
|
||||
node *cur = q->head;
|
||||
while (cur != NULL) {
|
||||
printf("%d ", cur->id);
|
||||
cur = cur->next;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int main() {
|
||||
queue *q = malloc(sizeof(queue));
|
||||
insert(q, 56);
|
||||
insert(q, 3);
|
||||
insert(q, 99);
|
||||
delete(q);
|
||||
display(q);
|
||||
|
||||
// free
|
||||
while (q->head != NULL)
|
||||
delete(q);
|
||||
free(q);
|
||||
}
|
Reference in New Issue
Block a user