Add Kochubei solve

This commit is contained in:
AZEN-SGG 2025-05-25 21:28:36 +03:00
parent 056e721d9a
commit 7cbc20e311
16 changed files with 237 additions and 37 deletions

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -26,19 +26,16 @@ int main(int argc, char** argv)
if (status==-1) if (status==-1)
{ {
printf("Cannot open file\n"); printf("Cannot open file\n");
delete_node(N);
return -1; return -1;
} }
else if (status==-2) else if (status==-2)
{ {
printf("Cannot read file\n"); printf("Cannot read file\n");
delete_node(N);
return -2; return -2;
} }
else if (status==3) else if (status==3)
{ {
printf("Cannot allocate memory\n"); printf("Cannot allocate memory\n");
delete_node(N);
return -2; return -2;
} }
print_node(p, N); print_node(p, N);

View file

@ -157,11 +157,11 @@ void delete_node(node* head)
while(1) while(1)
{ {
node* pointer; node* pointer;
if (head==0) break;
free(head->string); free(head->string);
pointer=head; pointer=head;
head=head->next; head=head->next;
free(pointer); free(pointer);
if (head==0) break;
} }
} }

View file

1
2025.05.23/dist/Kochubei_DS/inputs/one.txt vendored Executable file
View file

@ -0,0 +1 @@
hello 109

19
2025.05.23/dist/Kochubei_DS/inputs/test.txt vendored Executable file
View file

@ -0,0 +1,19 @@
a
b
a
b
a
b
b
b
b
b
a
b
c
d
e
e
e
f
f

2
2025.05.23/dist/Kochubei_DS/inputs/two.txt vendored Executable file
View file

@ -0,0 +1,2 @@
second line

View file

@ -332,6 +332,215 @@ node* solve8(node* head)
} }
node* solve9(node* head)
{
node* tmp1;
node* tmp2;
node* tmp3;
int was_thrown=0;
int last_eq=0;
tmp1=head;
if (head->next==0)
{
return head;
}
if (head->next->next==0)
{
return head;
}
tmp1=head;
tmp2=head->next;
tmp3=head->next->next;
while(tmp3->next!=0)
{
if (was_thrown==0)
{
if (strcmp(tmp1->string, tmp2->string)<=0 && strcmp(tmp2->string, tmp3->string)>=0)
{
if (strcmp(tmp2->string, tmp3->string)==0)
{
last_eq=1;
}
else
{
last_eq=0;
}
free(tmp2->string);
tmp2->string=0;
was_thrown=1;
}
else
{
was_thrown=0;
}
}
else
{
if (last_eq==1 && strcmp(tmp2->string, tmp3->string)>=0)
{
if (strcmp(tmp2->string, tmp3->string)==0)
{
last_eq=1;
}
else
{
last_eq=0;
}
free(tmp2->string);
tmp2->string=0;
was_thrown=1;
}
else
{
was_thrown=0;
}
}
tmp1=tmp2;
tmp2=tmp3;
tmp3=tmp3->next;
}
tmp1=head;
tmp2=head->next;
tmp3=head->next->next;
while(1)
{
if (tmp2->string==0)
{
free(tmp2);
tmp1->next=tmp3;
if (tmp3->next==0)
{
break;
}
tmp2=tmp3;
tmp3=tmp3->next;
}
else
{
if (tmp3->next==0)
{
break;
}
tmp1=tmp2;
tmp2=tmp3;
tmp3=tmp3->next;
}
}
return head;
}
node* solve10(node* head)
{
node* tmp1;
node* tmp2;
node* tmp3;
int last=0;
if (head->next==0)
{
return head;
}
tmp1=head;
tmp2=head->next;
while(1)
{
if (strcmp(tmp1->string, tmp2->string)>=0)
{
free(tmp1->string);
tmp1->string=0;
last=1;
}
else
{
if (last==1)
{
free(tmp1->string);
tmp1->string=0;
last=0;
}
}
if (tmp2->next==0)
{
break;
}
tmp1=tmp2;
tmp2=tmp2->next;
}
if (last==1)
{
free(tmp2->string);
tmp2->string=0;
}
tmp1=head;
tmp2=head->next;
if (head->next->next==0)
{
if (tmp1->string==0)
{
free(tmp1);
free(tmp2);
return 0;
}
else
{
return head;
}
}
tmp3=head->next->next;
while(1)
{
if (tmp2->string==0)
{
free(tmp2);
tmp1->next=tmp3;
if (tmp3->next==0)
{
if (tmp3->string==0)
{
tmp1->next=0;
free(tmp3);
}
break;
}
tmp2=tmp3;
tmp3=tmp3->next;
}
else
{
if (tmp3->next==0)
{
if (tmp3->string==0)
{
tmp2->next=0;
free(tmp3);
}
break;
}
tmp1=tmp2;
tmp2=tmp3;
tmp3=tmp3->next;
}
}
if (head->string==0)
{
node* ret=head->next;
free(head);
return ret;
}
return head;
}
/*/
node* solve9(node* head) node* solve9(node* head)
{ {
char s[1]={'\0'}; char s[1]={'\0'};
@ -423,7 +632,6 @@ node* solve9(node* head)
return head; return head;
} }
node* solve10(node* head) node* solve10(node* head)
{ {
@ -499,7 +707,7 @@ node* solve10(node* head)
/*/
node* solve10(node* head) node* solve10(node* head)
{ {
int flag=0; int flag=0;
@ -540,7 +748,7 @@ node* solve10(node* head)
copy_node(ptr2, &tmp2); copy_node(ptr2, &tmp2);
copy_node(ptr3, &tmp3); copy_node(ptr3, &tmp3);
flag=0; flag=0;
ptr1->next=ptr3; ptr1->next=ptr3;
free(ptr2->string); free(ptr2->string);
free(ptr2); free(ptr2);
@ -584,7 +792,7 @@ node* solve10(node* head)
printf("DELETED 1\n"); printf("DELETED 1\n");
print_node(100, base.next); print_node(100, base.next);
} }
else else
{ {
if (flag==1) if (flag==1)
@ -601,7 +809,7 @@ node* solve10(node* head)
copy_node(ptr2, &tmp2); copy_node(ptr2, &tmp2);
copy_node(ptr3, &tmp3); copy_node(ptr3, &tmp3);
flag=0; flag=0;
ptr1->next=ptr3; ptr1->next=ptr3;
free(ptr2->string); free(ptr2->string);
free(ptr2); free(ptr2);
@ -629,7 +837,7 @@ node* solve10(node* head)
} }
} }
} }
return base.next; return base.next;
} }