-
Notifications
You must be signed in to change notification settings - Fork 2
/
Implement of Queue with using linked list.c
137 lines (117 loc) · 2.34 KB
/
Implement of Queue with using linked list.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Queue [data->next]
struct queue {
int data;
struct queue* next;
};
typedef struct queue* Queue;
Queue createStack(int);
void enqueue();
void push(Queue*, int);
int dequeue(Queue*);
void printQueue(Queue);
int len(Queue);
Queue createQueue(int data){
Queue queue = (Queue)malloc(sizeof(Queue));
queue->data = data;
queue->next = NULL;
return queue;
}
void enqueue(Queue* root, int data){
Queue newNode = createQueue(data);
Queue temp = *root;
if(*root == NULL){
*root = newNode;
return;
}
while(temp->next != NULL){
temp = temp->next;
}
temp->next = newNode;
return ;
}
void push(Queue* root, int data){
Queue newNode = createQueue(data);
Queue temp = *root;
if(*root == NULL){
*root = newNode;
return;
}
newNode->next = *root;
*root = newNode;
return ;
}
int dequeue(Queue* root){
if(*root == NULL)
return INT_MIN;
Queue temp = *root;
int result = temp->data;
(*root) = (*root)->next;
free(temp);
return result;
}
void printQueue(Queue root){
Queue temp = root;
int l = len(temp);
printf("[");
for(int i = 1; i <= l; i++){
if(i>1)
printf(",");
printf("%d",temp->data);
temp = temp->next;
}
printf("]\n");
}
int len(Queue root){
int l = 0;
Queue temp = root;
while(temp != NULL){
l++;
temp = temp->next;
}
return l;
}
void printArray(int n,int arr[n]){
printf("[");
for(int i = 0; i < n; i++){
if(i>0)
printf(",");
printf("%d",arr[i]);
}
printf("]\n");
}
int main(void) {
srand(time(NULL));
int n = 10;
int arr[n];
Queue root;
for(int i = 0 ; i < n; i++){
arr[i] = rand()%10;
}
printf("Dizi elamanları: ");
printArray(n,arr);
printf("dizideki elamanları Queuey'e yerleştirecek\n");
for(int i = 0 ; i < n; i++){
if(i == 0){
printf("Başına %d eklemeler. ",arr[i]);
root = createQueue(arr[i]);
}
else{
if(rand()%3 == 0){
printf("Başına %d eklemeler. ",arr[i]);
push(&root, arr[i]);
}else if(rand()%3 == 1){
printf("Queueten %d element silindi . ", dequeue(&root));
}
else{
printf("sonuna %d eklemeler. ",arr[i]);
enqueue(&root, arr[i]);
}
}
printQueue(root);
}
return 0;
}