nihonium
/
mipt_clang
Archived
1
0
Fork 0

modified: double_linked_list.c

remotes/private/master
nihonium 3 years ago
parent a56310442f
commit 019748d47b

@ -152,6 +152,9 @@ Data list_pop_back(struct Node * list) {
} }
Data list_delete(struct Node * t) { Data list_delete(struct Node * t) {
if (t == t->next) {
return 0;
}
t->prev->next = t->next; t->prev->next = t->next;
t->next->prev = t->prev; t->next->prev = t->prev;
Data val = t->data; Data val = t->data;
@ -182,17 +185,32 @@ Data list_sum (struct Node * list) {
return s; return s;
} }
int list_size(struct Node *list) {
struct Node *ptr = list->next;
if (ptr == list) {
return 0;
}
int len = 1;
while (ptr->next != list) {
ptr = ptr->next;
++len;
}
return len;
}
int main() { int main() {
struct Node x[10]; struct Node x[10];
struct Node * a = malloc(sizeof(struct Node)); struct Node * a = malloc(sizeof(struct Node));
struct Node * b = malloc(sizeof(struct Node));
int i; int i;
list_init(a); list_init(a);
list_init(b);
for(i=0; i<10; i++) { for(i=0; i<10; i++) {
x[i].data = i; x[i].data = i;
list_insert(a, &x[i]); list_insert(a, &x[i]);
} }
list_print(a); list_print(a);
while(list_delete(a->next));
free(a);
} }