#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int* data;
int length;
int size;
} arraylist;
void initialize_arraylist(arraylist* list,int n)
{
list
->data
=(int*)malloc(n
*sizeof(int)); list->length=0;
list->size=n;
}
void resize_arraylist(arraylist* list)
{
list->size*=2;
list
->data
=(int*)realloc(list
->data
,list
->size
*sizeof(int));}
void add_elements(arraylist* list,int value)
{
if(list->length>=list->size)
{
resize_arraylist(list);
}
list->data[list->length++]=value;
}
void print_arraylist(arraylist *list)
{
for(int i=0; i<list->length; i++)
{
}
}
void insert_first(arraylist* list,int value)
{
if(list->length>=list->size)
{
resize_arraylist(list);
}
list->length++;
for(int i=list->length-1; i>=0; i--)
{
list->data[i+1]=list->data[i];
}
list->data[0]=value;
}
void insert_at_last(arraylist* list,int value)
{
if(list->length>=list->size)
{
resize_arraylist(list);
}
list->length++;
list->data[list->length-1]=value;
}
void delete_position(arraylist* list,int position )
{
for(int j=position-1; j<list->length; j++)
{
list->data[j]=list->data[j+1];
}
list->length--;
}
void insert_position(arraylist *list,int position,int value)
{
if(list->length>=list->size)
{
resize_arraylist(list);
}
for(int j=list->length-1; j>=position-1; j--)
{
list->data[j+1]=list->data[j];
}
list->data[position-1]=value;
list->length++;
}
void delete_matching_values(arraylist* list,int value)
{
int k=0;
for(int i=0; i<list->length; i++)
{
if(list->data[i]==value)
{
for(int j=i; j<list->length; j++)
{
list->data[j]=list->data[j+1];
}
k++;
}
}
list->length =list->length-k;
}
void replace_matching_values(arraylist* list,int value,int k)
{
for(int i=0; i<list->length; i++)
{
if(list->data[i]==value)
{
list->data[i]=k;
}
}
}
int main()
{
arraylist list_main;
initialize_arraylist(&list_main,3);
printf("\nEnter elements number: "); int x;
for(int i=0; i<x; i++)
{
int y;
add_elements(&list_main,y);
}
print_arraylist(&list_main);
int choice,Value,position;
do
{
printf("\nEnter your choice :\n"); printf("1.insert at first\n"); printf("3.see current elements\n"); printf("4.delete elements from position\n"); printf("5.insert at a particular position\n"); printf("6.delete matching values\n"); printf("7.replace matching values\n"); if(choice>=9||choice<=0)
{
printf("\nis this a joke!!\nBye"); break;
}
else{
switch(choice)
{
case 1:
insert_first(&list_main,Value);
print_arraylist(&list_main);
break;
case 2:
insert_at_last(&list_main,Value);
print_arraylist(&list_main);
break;
case 3:
print_arraylist(&list_main);
break;
case 4:
printf("What position should be deleted?:"); delete_position(&list_main,position);
print_arraylist(&list_main);
break;
case 5:
printf("Enter the postion and value :"); scanf("%d %d",&position
,&Value
); insert_position(&list_main,position,Value);
print_arraylist(&list_main);
break;
case 6:
printf("Enter the value you want to delete :"); delete_matching_values(&list_main,Value);
print_arraylist(&list_main);
break;
case 7:
printf("Enter the value you want to repalce :"); printf("Enter the value you want to repalce with:"); replace_matching_values(&list_main,Value,position);
print_arraylist(&list_main);
break;
}}
}
while(choice!=8);
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnR5cGVkZWYgc3RydWN0CnsKICAgIGludCogZGF0YTsKICAgIGludCBsZW5ndGg7CiAgICBpbnQgc2l6ZTsKCn0gYXJyYXlsaXN0Owp2b2lkIGluaXRpYWxpemVfYXJyYXlsaXN0KGFycmF5bGlzdCogbGlzdCxpbnQgbikKewogICAgbGlzdC0+ZGF0YT0oaW50KiltYWxsb2MobipzaXplb2YoaW50KSk7CiAgICBsaXN0LT5sZW5ndGg9MDsKICAgIGxpc3QtPnNpemU9bjsKfQp2b2lkIHJlc2l6ZV9hcnJheWxpc3QoYXJyYXlsaXN0KiBsaXN0KQp7CiAgICBsaXN0LT5zaXplKj0yOwogICAgbGlzdC0+ZGF0YT0oaW50KilyZWFsbG9jKGxpc3QtPmRhdGEsbGlzdC0+c2l6ZSpzaXplb2YoaW50KSk7Cn0Kdm9pZCBhZGRfZWxlbWVudHMoYXJyYXlsaXN0KiBsaXN0LGludCB2YWx1ZSkKewogICAgaWYobGlzdC0+bGVuZ3RoPj1saXN0LT5zaXplKQogICAgewogICAgICAgIHJlc2l6ZV9hcnJheWxpc3QobGlzdCk7CiAgICB9CiAgICBsaXN0LT5kYXRhW2xpc3QtPmxlbmd0aCsrXT12YWx1ZTsKfQp2b2lkIHByaW50X2FycmF5bGlzdChhcnJheWxpc3QgKmxpc3QpCnsKICAgIGZvcihpbnQgaT0wOyBpPGxpc3QtPmxlbmd0aDsgaSsrKQogICAgewoKICAgICAgICBwcmludGYoIiVkICIsbGlzdC0+ZGF0YVtpXSk7CiAgICB9Cn0Kdm9pZCBpbnNlcnRfZmlyc3QoYXJyYXlsaXN0KiBsaXN0LGludCB2YWx1ZSkKewogICAgaWYobGlzdC0+bGVuZ3RoPj1saXN0LT5zaXplKQogICAgewogICAgICAgIHJlc2l6ZV9hcnJheWxpc3QobGlzdCk7CgogICAgfQogICAgbGlzdC0+bGVuZ3RoKys7CiAgICBmb3IoaW50IGk9bGlzdC0+bGVuZ3RoLTE7IGk+PTA7IGktLSkKICAgIHsKICAgICAgICBsaXN0LT5kYXRhW2krMV09bGlzdC0+ZGF0YVtpXTsKCiAgICB9CiAgICBsaXN0LT5kYXRhWzBdPXZhbHVlOwp9CgoKdm9pZCBpbnNlcnRfYXRfbGFzdChhcnJheWxpc3QqIGxpc3QsaW50IHZhbHVlKQp7CiAgICBpZihsaXN0LT5sZW5ndGg+PWxpc3QtPnNpemUpCiAgICB7CiAgICAgICAgcmVzaXplX2FycmF5bGlzdChsaXN0KTsKCiAgICB9CiAgICBsaXN0LT5sZW5ndGgrKzsKICAgIGxpc3QtPmRhdGFbbGlzdC0+bGVuZ3RoLTFdPXZhbHVlOwp9Cgp2b2lkIGRlbGV0ZV9wb3NpdGlvbihhcnJheWxpc3QqIGxpc3QsaW50IHBvc2l0aW9uICkKewoKICAgIGZvcihpbnQgaj1wb3NpdGlvbi0xOyBqPGxpc3QtPmxlbmd0aDsgaisrKQogICAgewogICAgICAgIGxpc3QtPmRhdGFbal09bGlzdC0+ZGF0YVtqKzFdOwoKCiAgICB9CiAgICBsaXN0LT5sZW5ndGgtLTsKfQoKCnZvaWQgaW5zZXJ0X3Bvc2l0aW9uKGFycmF5bGlzdCAqbGlzdCxpbnQgcG9zaXRpb24saW50IHZhbHVlKQp7CgogICAgaWYobGlzdC0+bGVuZ3RoPj1saXN0LT5zaXplKQogICAgewogICAgICAgIHJlc2l6ZV9hcnJheWxpc3QobGlzdCk7CgogICAgfQogICAgZm9yKGludCBqPWxpc3QtPmxlbmd0aC0xOyBqPj1wb3NpdGlvbi0xOyBqLS0pCiAgICB7CgogICAgICAgIGxpc3QtPmRhdGFbaisxXT1saXN0LT5kYXRhW2pdOwoKCiAgICB9CiAgICBsaXN0LT5kYXRhW3Bvc2l0aW9uLTFdPXZhbHVlOwogICAgbGlzdC0+bGVuZ3RoKys7Cn0Kdm9pZCBkZWxldGVfbWF0Y2hpbmdfdmFsdWVzKGFycmF5bGlzdCogbGlzdCxpbnQgdmFsdWUpCnsKICAgIGludCBrPTA7CiAgICBmb3IoaW50IGk9MDsgaTxsaXN0LT5sZW5ndGg7IGkrKykKICAgIHsKCgogICAgICAgIGlmKGxpc3QtPmRhdGFbaV09PXZhbHVlKQogICAgICAgIHsKCiAgICAgICAgICAgIGZvcihpbnQgaj1pOyBqPGxpc3QtPmxlbmd0aDsgaisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsaXN0LT5kYXRhW2pdPWxpc3QtPmRhdGFbaisxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBrKys7CgoKICAgICAgICB9CgogICAgfQogICAgbGlzdC0+bGVuZ3RoID1saXN0LT5sZW5ndGgtazsKfQp2b2lkIHJlcGxhY2VfbWF0Y2hpbmdfdmFsdWVzKGFycmF5bGlzdCogbGlzdCxpbnQgdmFsdWUsaW50IGspCnsKCiAgICBmb3IoaW50IGk9MDsgaTxsaXN0LT5sZW5ndGg7IGkrKykKICAgIHsKCgogICAgICAgIGlmKGxpc3QtPmRhdGFbaV09PXZhbHVlKQogICAgICAgIHsKICAgICAgICAgIGxpc3QtPmRhdGFbaV09azsKICAgICAgICB9CgogICAgfQoKfQoKaW50IG1haW4oKQp7CiAgICBhcnJheWxpc3QgbGlzdF9tYWluOwogICAgaW5pdGlhbGl6ZV9hcnJheWxpc3QoJmxpc3RfbWFpbiwzKTsKCiAgICBwcmludGYoIlxuRW50ZXIgZWxlbWVudHMgbnVtYmVyOiAiKTsKICAgIGludCB4OwogICAgc2NhbmYoIiVkIiwmeCk7CiAgICBmb3IoaW50IGk9MDsgaTx4OyBpKyspCiAgICB7CiAgICAgICAgaW50IHk7CiAgICAgICAgc2NhbmYoIiVkIiwmeSk7CiAgICAgICAgYWRkX2VsZW1lbnRzKCZsaXN0X21haW4seSk7CiAgICB9CiAgICBwcmludF9hcnJheWxpc3QoJmxpc3RfbWFpbik7CiAgICBpbnQgY2hvaWNlLFZhbHVlLHBvc2l0aW9uOwoKICAgIGRvCiAgICB7CiAgICAgICAgcHJpbnRmKCJcbkVudGVyIHlvdXIgY2hvaWNlIDpcbiIpOwogICAgICAgIHByaW50ZigiMS5pbnNlcnQgYXQgZmlyc3RcbiIpOwogICAgICAgIHByaW50ZigiMi5pbnNlcnQgYXQgbGFzdFxuIik7CiAgICAgICAgcHJpbnRmKCIzLnNlZSBjdXJyZW50IGVsZW1lbnRzXG4iKTsKICAgICAgICBwcmludGYoIjQuZGVsZXRlIGVsZW1lbnRzIGZyb20gcG9zaXRpb25cbiIpOwogICAgICAgIHByaW50ZigiNS5pbnNlcnQgYXQgYSBwYXJ0aWN1bGFyIHBvc2l0aW9uXG4iKTsKICAgICAgICBwcmludGYoIjYuZGVsZXRlIG1hdGNoaW5nIHZhbHVlc1xuIik7CiAgICAgICAgcHJpbnRmKCI3LnJlcGxhY2UgbWF0Y2hpbmcgdmFsdWVzXG4iKTsKICAgICAgICBwcmludGYoIjguZXhpdFxuIik7CiAgICAgICAgc2NhbmYoIiVkIiwmY2hvaWNlKTsKICAgICAgICBpZihjaG9pY2U+PTl8fGNob2ljZTw9MCkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiXG5pcyB0aGlzIGEgam9rZSEhXG5CeWUiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgc3dpdGNoKGNob2ljZSkKICAgICAgICB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBwcmludGYoIlxuZW50ZXIgdmFsdWUgOiIpOwogICAgICAgICAgICBzY2FuZigiJWQiLCZWYWx1ZSk7CiAgICAgICAgICAgIGluc2VydF9maXJzdCgmbGlzdF9tYWluLFZhbHVlKTsKICAgICAgICAgICAgcHJpbnRfYXJyYXlsaXN0KCZsaXN0X21haW4pOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIHByaW50ZigiXG5lbnRlciB2YWx1ZSA6Iik7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsJlZhbHVlKTsKICAgICAgICAgICAgaW5zZXJ0X2F0X2xhc3QoJmxpc3RfbWFpbixWYWx1ZSk7CiAgICAgICAgICAgIHByaW50X2FycmF5bGlzdCgmbGlzdF9tYWluKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBwcmludF9hcnJheWxpc3QoJmxpc3RfbWFpbik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcHJpbnRmKCJXaGF0IHBvc2l0aW9uIHNob3VsZCBiZSBkZWxldGVkPzoiKTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwmcG9zaXRpb24pOwogICAgICAgICAgICBkZWxldGVfcG9zaXRpb24oJmxpc3RfbWFpbixwb3NpdGlvbik7CiAgICAgICAgICAgIHByaW50X2FycmF5bGlzdCgmbGlzdF9tYWluKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNToKICAgICAgICAgICAgcHJpbnRmKCJFbnRlciB0aGUgcG9zdGlvbiBhbmQgdmFsdWUgOiIpOwogICAgICAgICAgICBzY2FuZigiJWQgJWQiLCZwb3NpdGlvbiwmVmFsdWUpOwogICAgICAgICAgICBpbnNlcnRfcG9zaXRpb24oJmxpc3RfbWFpbixwb3NpdGlvbixWYWx1ZSk7CiAgICAgICAgICAgIHByaW50X2FycmF5bGlzdCgmbGlzdF9tYWluKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBwcmludGYoIkVudGVyIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byBkZWxldGUgOiIpOwogICAgICAgICAgICBzY2FuZigiJWQiLCZWYWx1ZSk7CiAgICAgICAgICAgIGRlbGV0ZV9tYXRjaGluZ192YWx1ZXMoJmxpc3RfbWFpbixWYWx1ZSk7CiAgICAgICAgICAgIHByaW50X2FycmF5bGlzdCgmbGlzdF9tYWluKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBwcmludGYoIkVudGVyIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byByZXBhbGNlIDoiKTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwmVmFsdWUpOwogICAgICAgICAgICBwcmludGYoIkVudGVyIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byByZXBhbGNlIHdpdGg6Iik7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsJnBvc2l0aW9uKTsKICAgICAgICAgICAgcmVwbGFjZV9tYXRjaGluZ192YWx1ZXMoJmxpc3RfbWFpbixWYWx1ZSxwb3NpdGlvbik7CiAgICAgICAgICAgIHByaW50X2FycmF5bGlzdCgmbGlzdF9tYWluKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIH19CiAgICB9CiAgICB3aGlsZShjaG9pY2UhPTgpOwp9Cg==