modified: list_and_trees/double_linked_list.c
modified: list_and_trees/ejudge/list3_full.c
This commit is contained in:
parent
019748d47b
commit
6c827dcff8
2 changed files with 30 additions and 49 deletions
|
@ -29,18 +29,9 @@ void sum(Data a, void * s);
|
|||
void list_init(struct Node * list) {
|
||||
list->next = list;
|
||||
list->prev = list;
|
||||
list->data = 113;
|
||||
list->data = -1;
|
||||
}
|
||||
|
||||
/*void list_print (struct Node * list) {
|
||||
if (list != list->next) {
|
||||
list_for_each(list, print_it, stdout);
|
||||
printf("\n");
|
||||
}
|
||||
else {
|
||||
printf("Empty list\n");
|
||||
}
|
||||
}*/
|
||||
void list_print (struct Node * list) {
|
||||
struct Node *ptr = list->next;
|
||||
if (ptr == list) {
|
||||
|
@ -120,11 +111,11 @@ int list_is_empty(struct Node * list) {
|
|||
int list_clear(struct Node * list) {
|
||||
struct Node *ptr = list->next;
|
||||
|
||||
struct Node *next;
|
||||
struct Node *n;
|
||||
while (ptr->next != list) {
|
||||
next = ptr->next;
|
||||
n = ptr->next;
|
||||
free(ptr);
|
||||
ptr = next;
|
||||
ptr = n;
|
||||
}
|
||||
list->next = list;
|
||||
list->prev = list;
|
||||
|
@ -153,7 +144,7 @@ Data list_pop_back(struct Node * list) {
|
|||
|
||||
Data list_delete(struct Node * t) {
|
||||
if (t == t->next) {
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
t->prev->next = t->next;
|
||||
t->next->prev = t->prev;
|
||||
|
@ -211,6 +202,7 @@ struct Node x[10];
|
|||
list_insert(a, &x[i]);
|
||||
}
|
||||
list_print(a);
|
||||
while(list_delete(a->next));
|
||||
//while(list_delete(a->next));
|
||||
list_clear(a);
|
||||
free(a);
|
||||
}
|
||||
|
|
|
@ -29,18 +29,9 @@ void sum(Data a, void * s);
|
|||
void list_init(struct Node * list) {
|
||||
list->next = list;
|
||||
list->prev = list;
|
||||
list->data = 113;
|
||||
list->data = -1;
|
||||
}
|
||||
|
||||
/*void list_print (struct Node * list) {
|
||||
if (list != list->next) {
|
||||
list_for_each(list, print_it, stdout);
|
||||
printf("\n");
|
||||
}
|
||||
else {
|
||||
printf("Empty list\n");
|
||||
}
|
||||
}*/
|
||||
void list_print (struct Node * list) {
|
||||
struct Node *ptr = list->next;
|
||||
if (ptr == list) {
|
||||
|
@ -120,12 +111,12 @@ int list_is_empty(struct Node * list) {
|
|||
int list_clear(struct Node * list) {
|
||||
struct Node *ptr = list->next;
|
||||
|
||||
struct Node *next;
|
||||
struct Node *n;
|
||||
while (ptr->next != list) {
|
||||
next = ptr->next;
|
||||
n = ptr->next;
|
||||
free(ptr);
|
||||
ptr = next;
|
||||
}
|
||||
ptr = n;
|
||||
}
|
||||
list->next = list;
|
||||
list->prev = list;
|
||||
return 0;
|
||||
|
@ -152,8 +143,8 @@ Data list_pop_back(struct Node * list) {
|
|||
}
|
||||
|
||||
Data list_delete(struct Node * t) {
|
||||
if (t == t->next) {
|
||||
return 0;
|
||||
if (t->next == t) {
|
||||
return -1;
|
||||
}
|
||||
t->prev->next = t->next;
|
||||
t->next->prev = t->prev;
|
||||
|
@ -218,31 +209,35 @@ int main() {
|
|||
scanf("%d", &B[i]);
|
||||
list_push_back(b, B[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i<MAX; ++i) {
|
||||
|
||||
for (i = 0;; ++i) {
|
||||
if (i == MAX) {
|
||||
printf("botva\n");
|
||||
while(list_delete(a->next) != -1);
|
||||
while(list_delete(b->next) != -1);
|
||||
free(a); free(b);
|
||||
return 0;
|
||||
}
|
||||
if (list_size(a) == 0) {
|
||||
printf("second %d\n", i);
|
||||
while(list_delete(a->next));
|
||||
while(list_delete(b->next));
|
||||
free(a);
|
||||
free(b);
|
||||
while(list_delete(b->next) != -1);
|
||||
free(a); free(b);
|
||||
return 0;
|
||||
}
|
||||
if (list_size(b) == 0) {
|
||||
printf("first %d\n", i);
|
||||
while(list_delete(a->next));
|
||||
while(list_delete(b->next));
|
||||
free(a);
|
||||
free(b);
|
||||
while(list_delete(a->next) != -1);
|
||||
free(a); free(b);
|
||||
return 0;
|
||||
}
|
||||
k = list_pop_front(a);
|
||||
l = list_pop_front(b);
|
||||
if (k == 10 || l == 0) {
|
||||
|
||||
if ((k == 9) && (l == 0)) {
|
||||
list_push_back(b, k);
|
||||
list_push_back(b, l);
|
||||
}
|
||||
else if (k == 0 || l == 10) {
|
||||
else if ((k == 0) && (l == 9)) {
|
||||
list_push_back(a, k);
|
||||
list_push_back(a, l);
|
||||
}
|
||||
|
@ -255,10 +250,4 @@ int main() {
|
|||
list_push_back(b, l);
|
||||
}
|
||||
}
|
||||
printf("botva\n");
|
||||
while(list_delete(a->next));
|
||||
while(list_delete(b->next));
|
||||
free(a);
|
||||
free(b);
|
||||
return 0;
|
||||
}
|
||||
|
|
Reference in a new issue