#include<stdio.h>
#include<stdlib.h>
struct node {
int val;
struct node * next;
} ;
struct list {
struct node* first;
struct node* last;
} ;
struct list* makelist( ) {
struct list * l;
l
= ( struct list
* ) malloc ( sizeof ( struct list
) ) ; l-> first = NULL;
l-> last = NULL;
return l;
}
void freelist( struct list* l) {
if ( l-> first == NULL) {
return ;
}
struct node * temp = l-> first, * nextNode;
while ( temp != NULL)
{
nextNode = temp-> next;
temp = nextNode;
}
}
void search( struct list* l, int cou, int sindex) {
if ( sindex> cou) {
}
else {
struct node* temp= l-> first;
while ( temp!= NULL) {
for ( int i= 0 ; cou; i++ ) {
if ( i== sindex) {
printf ( "Item found! %d" , temp
-> val
) ; }
else
temp= temp-> next;
}
}
}
}
int addnode( struct list* l, int v) {
struct node* n;
int cou = 0 ;
n
= ( struct node
* ) malloc ( sizeof ( struct node
) ) ; n-> val = v;
n-> next = NULL;
cou+= 1 ;
if ( l-> first == NULL) {
l-> first = l-> last = n;
} else {
l-> last-> next = n;
l-> last = n;
}
return cou;
}
void printlist( struct list* l) {
struct node* temp = l-> first;
while ( temp != NULL) {
temp = temp-> next;
}
}
int main( ) {
int cou= 0 , sindex;
int noOfNode;
char ope;
struct list * l = makelist( ) ;
printf ( "Kindly give the number of nodes to be added : " ) ; for ( int i= 0 ; i< noOfNode; i++ ) {
int num;
printf ( "Provide the number to be added to the List : " ) ; cou = addnode( l, num) ;
}
printf ( "Kindly provide the instruction to perform else type any other key \n P : Print\n K: Search\n " ) ; if ( ope== 'P' )
printlist( l) ;
else if ( ope== 'K' ) {
printf ( "Kindly give the Kth element index : " ) ; search( l, cou, sindex- 1 ) ;
}
freelist( l) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnN0cnVjdCBub2RlIHsKICAgIGludCB2YWw7CiAgICBzdHJ1Y3Qgbm9kZSAqbmV4dDsKCn07CgpzdHJ1Y3QgbGlzdCB7CiAgICBzdHJ1Y3Qgbm9kZSogZmlyc3Q7CiAgICBzdHJ1Y3Qgbm9kZSogbGFzdDsKfTsKCnN0cnVjdCBsaXN0KiBtYWtlbGlzdCgpIHsKICAgIHN0cnVjdCBsaXN0ICpsOwogICAgbCA9IChzdHJ1Y3QgbGlzdCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGlzdCkpOwogICAgbC0+Zmlyc3QgPSBOVUxMOwogICAgbC0+bGFzdCA9IE5VTEw7CiAgICByZXR1cm4gbDsKfQp2b2lkIGZyZWVsaXN0KHN0cnVjdCBsaXN0KiBsKSB7CiAgICBpZiAobC0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgIGZyZWUobCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgc3RydWN0IG5vZGUgKnRlbXAgPSBsLT5maXJzdCwgKm5leHROb2RlOwogICAgd2hpbGUgKHRlbXAgIT0gTlVMTCkKICAgIHsKICAgICAgICBuZXh0Tm9kZSA9IHRlbXAtPm5leHQ7CiAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICB0ZW1wID0gbmV4dE5vZGU7CiAgICB9CgogICAgZnJlZShsKTsKfQp2b2lkIHNlYXJjaChzdHJ1Y3QgbGlzdCpsLGludCBjb3UsaW50IHNpbmRleCl7CglpZihzaW5kZXg+Y291KXsKCQlwcmludGYoIkluZGV4IG91dCBvZiByYW5nZSIpOwoJfQoJZWxzZXsKCXN0cnVjdCBub2RlKiB0ZW1wPWwtPmZpcnN0OwoJd2hpbGUodGVtcCE9TlVMTCl7CgkJZm9yKGludCBpPTA7Y291O2krKyl7CgkJaWYoaT09c2luZGV4KXsKCQkJcHJpbnRmKCJJdGVtIGZvdW5kISAlZCIsdGVtcC0+dmFsKTsKCQl9CgkJZWxzZQoJCXRlbXA9dGVtcC0+bmV4dDsKCX0KCX0KfQp9CgppbnQgYWRkbm9kZShzdHJ1Y3QgbGlzdCogbCwgaW50IHYpIHsKICAgIHN0cnVjdCBub2RlKiBuOwogICAgaW50IGNvdSA9IDA7CiAgICBuID0gKHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICBuLT52YWwgPSB2OwogICAgbi0+bmV4dCA9IE5VTEw7CiAgICBjb3UrPTE7CiAgICBpZiAobC0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgIGwtPmZpcnN0ID0gbC0+bGFzdCA9IG47CiAgICB9IGVsc2UgewogICAgICAgIGwtPmxhc3QtPm5leHQgPSBuOwogICAgICAgIGwtPmxhc3QgPSBuOwogICAgfQogICAgcmV0dXJuIGNvdTsKfQp2b2lkIHByaW50bGlzdChzdHJ1Y3QgbGlzdCogbCkgewogICAgc3RydWN0IG5vZGUqIHRlbXAgPSBsLT5maXJzdDsKICAgIHByaW50ZigiTGlua2VkIExpc3Q6ICIpOwogICAgd2hpbGUgKHRlbXAgIT0gTlVMTCkgewogICAgICAgIHByaW50ZigiJWQgLT4gIiwgdGVtcC0+dmFsKTsKICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiTlVMTFxuIik7Cn0KaW50IG1haW4oKSB7CiAgICBpbnQgY291PTAsc2luZGV4OwoJaW50IG5vT2ZOb2RlOwogICAgY2hhciBvcGU7CiAgICBzdHJ1Y3QgbGlzdCAqbCA9IG1ha2VsaXN0KCk7CiAgICBwcmludGYoIktpbmRseSBnaXZlIHRoZSBudW1iZXIgb2Ygbm9kZXMgdG8gYmUgYWRkZWQgOiAiKTsKICAgIHNjYW5mKCIlZCIsJm5vT2ZOb2RlKTsKICAgIGZvcihpbnQgaT0wO2k8bm9PZk5vZGU7aSsrKXsKICAgICAgICBpbnQgbnVtOwogICAgICAgIHByaW50ZigiUHJvdmlkZSB0aGUgbnVtYmVyIHRvIGJlIGFkZGVkIHRvIHRoZSBMaXN0IDogIik7CiAgICAgICAgc2NhbmYoIiVkIiwmbnVtKTsKICAgICAgICBjb3UgPSBhZGRub2RlKGwsbnVtKTsKICAgIH0KICAgIHByaW50ZigiS2luZGx5IHByb3ZpZGUgdGhlIGluc3RydWN0aW9uIHRvIHBlcmZvcm0gZWxzZSB0eXBlIGFueSBvdGhlciBrZXkgXG4gUCA6IFByaW50XG4gSzogU2VhcmNoXG4iKTsKICAgIHNjYW5mKCIgJWMiLCZvcGUpOwogICAgaWYob3BlPT0nUCcpCiAgICAgICAgcHJpbnRsaXN0KGwpOwogICAgZWxzZSBpZihvcGU9PSdLJyl7CiAgICAgICAgcHJpbnRmKCJLaW5kbHkgZ2l2ZSB0aGUgS3RoIGVsZW1lbnQgaW5kZXggOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCZzaW5kZXgpOwogICAgICAgIHNlYXJjaChsLGNvdSxzaW5kZXgtMSk7CiAgICB9CiAgICBmcmVlbGlzdChsKTsKICAgIHJldHVybiAwOwp9Cg==