#include <stdlib.h>
#include <stdio.h>
struct node {
int data;
struct node *next;
}*init;
int length(struct node *n);
struct node *searchVal(struct node *n, int val);
struct node *createLinkedList(int data);
struct node *insertEnd(struct node *n, int data);
struct node *insertBeg( struct node *n, int data);
void printList(struct node *n);
int main(int argc, char **argv) {
struct node * newHeader;
init = createLinkedList(1);
insertEnd(init, 6);
newHeader = insertBeg(init, 9);
init = newHeader;
printList(init);
}
void printList(struct node *n) {
if (n != NULL) {
while (n != NULL) {
n = n->next;
}
} else {
}
}
/**
* returns length of node
*/
int length(struct node *n) {
int count = 0;
if (!n) {
return 0;
}
struct node *ptr = n;
while(ptr != NULL) {
count = count + 1;
ptr = ptr->next;
}
return count;
}
struct node *searchVal(struct node *n, int val) {
struct node *pos;
if (!n) {
return NULL;
}
struct node *ptr = n;
while (ptr != NULL) {
if (val == ptr->data){
pos = ptr;
return pos;
} else {
ptr = ptr->next;
}
}
return NULL;
}
struct node *createLinkedList(int data) {
struct node *new_node;
new_node
= (struct node
*)malloc(sizeof(struct node
));
if (new_node == NULL) return NULL;
new_node->data = data;
new_node->next = NULL;
return new_node;
}
struct node *insertBeg(struct node *n, int data) {
struct node *new_node;
new_node
= (struct node
*)malloc(sizeof(struct node
)); if (new_node == NULL) {
return NULL;
}
new_node->data = data;
new_node->next = n;
n = new_node;
return n;
}
struct node *insertEnd(struct node *n, int data){
struct node *new_node, *temp;
new_node
= (struct node
*)malloc(sizeof(struct node
));
if (new_node == NULL) {
return NULL;
}
new_node->data = data;
if (n == NULL) {
new_node->next = NULL;
temp = new_node;
} else {
temp = n;
while (temp->next != NULL) {
temp = temp->next;
temp->next = temp;
}
temp->next = new_node;
new_node->next = NULL;
}
return temp;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCnN0cnVjdCBub2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IG5vZGUgICpuZXh0Owp9KmluaXQ7CgppbnQgbGVuZ3RoKHN0cnVjdCBub2RlICpuKTsKc3RydWN0IG5vZGUgKnNlYXJjaFZhbChzdHJ1Y3Qgbm9kZSAqbiwgaW50IHZhbCk7CnN0cnVjdCBub2RlICpjcmVhdGVMaW5rZWRMaXN0KGludCBkYXRhKTsKc3RydWN0IG5vZGUgKmluc2VydEVuZChzdHJ1Y3Qgbm9kZSAqbiwgaW50IGRhdGEpOwpzdHJ1Y3Qgbm9kZSAqaW5zZXJ0QmVnKCBzdHJ1Y3Qgbm9kZSAqbiwgaW50IGRhdGEpOwp2b2lkIHByaW50TGlzdChzdHJ1Y3Qgbm9kZSAqbik7CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKCXN0cnVjdCBub2RlICogbmV3SGVhZGVyOwogICAgaW5pdCA9IGNyZWF0ZUxpbmtlZExpc3QoMSk7CiAgICBpbnNlcnRFbmQoaW5pdCwgNik7CiAgICBuZXdIZWFkZXIgPSBpbnNlcnRCZWcoaW5pdCwgOSk7CiAgICBpbml0ID0gbmV3SGVhZGVyOwogICAgcHJpbnRMaXN0KGluaXQpOwp9Cgp2b2lkIHByaW50TGlzdChzdHJ1Y3Qgbm9kZSAqbikgewogICAgaWYgKG4gIT0gTlVMTCkgewogICAgICAgIHdoaWxlIChuICE9IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCIlZCIsIG4tPmRhdGEpOwogICAgICAgICAgICBuID0gbi0+bmV4dDsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHByaW50ZigiRW1wdHkgTGlzdCIpOwogICAgfQp9CgovKioKICogIHJldHVybnMgbGVuZ3RoIG9mIG5vZGUKICovCmludCBsZW5ndGgoc3RydWN0IG5vZGUgKm4pIHsKICAgIGludCBjb3VudCA9IDA7CiAgICBpZiAoIW4pIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBzdHJ1Y3Qgbm9kZSAqcHRyID0gbjsKICAgIHdoaWxlKHB0ciAhPSBOVUxMKSB7CiAgICAgICAgY291bnQgPSBjb3VudCArIDE7CiAgICAgICAgcHRyID0gcHRyLT5uZXh0OwogICAgfQogICAgcmV0dXJuIGNvdW50Owp9CgpzdHJ1Y3Qgbm9kZSAqc2VhcmNoVmFsKHN0cnVjdCBub2RlICpuLCBpbnQgdmFsKSB7CiAgICBzdHJ1Y3Qgbm9kZSAqcG9zOwogICAgaWYgKCFuKSB7CiAgICAgICAgcmV0dXJuIE5VTEw7CiAgICB9CgoKICAgIHN0cnVjdCBub2RlICpwdHIgPSBuOwogICAgd2hpbGUgKHB0ciAhPSBOVUxMKSB7CiAgICAgICAgaWYgKHZhbCA9PSBwdHItPmRhdGEpewogICAgICAgICAgICBwb3MgPSBwdHI7CiAgICAgICAgICAgIHJldHVybiBwb3M7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHRyID0gcHRyLT5uZXh0OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBOVUxMOwp9CgpzdHJ1Y3Qgbm9kZSAqY3JlYXRlTGlua2VkTGlzdChpbnQgZGF0YSkgewogICAgc3RydWN0IG5vZGUgKm5ld19ub2RlOwogICAgbmV3X25vZGUgPSAoc3RydWN0IG5vZGUgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CgogICAgaWYgKG5ld19ub2RlID09IE5VTEwpIHJldHVybiBOVUxMOwogICAgbmV3X25vZGUtPmRhdGEgPSBkYXRhOwogICAgbmV3X25vZGUtPm5leHQgPSBOVUxMOwoKICAgIHJldHVybiBuZXdfbm9kZTsKfQoKc3RydWN0IG5vZGUgKmluc2VydEJlZyhzdHJ1Y3Qgbm9kZSAqbiwgaW50IGRhdGEpIHsKICAgIHN0cnVjdCBub2RlICpuZXdfbm9kZTsKICAgIG5ld19ub2RlID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwogICAgaWYgKG5ld19ub2RlID09IE5VTEwpIHsKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KCiAgICBuZXdfbm9kZS0+ZGF0YSA9IGRhdGE7CiAgICBuZXdfbm9kZS0+bmV4dCA9IG47CiAgICBuID0gbmV3X25vZGU7CiAgICByZXR1cm4gbjsKfQoKc3RydWN0IG5vZGUgKmluc2VydEVuZChzdHJ1Y3Qgbm9kZSAqbiwgaW50IGRhdGEpewogICAgc3RydWN0IG5vZGUgKm5ld19ub2RlLCAqdGVtcDsKICAgIG5ld19ub2RlID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoKICAgIGlmIChuZXdfbm9kZSA9PSBOVUxMKSB7CiAgICAgICAgcmV0dXJuIE5VTEw7CiAgICB9CgogICAgbmV3X25vZGUtPmRhdGEgPSBkYXRhOwogICAgaWYgKG4gPT0gTlVMTCkgewogICAgICAgIG5ld19ub2RlLT5uZXh0ID0gTlVMTDsKICAgICAgICB0ZW1wID0gbmV3X25vZGU7CiAgICB9IGVsc2UgewogICAgICAgIHRlbXAgPSBuOwogICAgICAgIHdoaWxlICh0ZW1wLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgIHRlbXAtPm5leHQgPSB0ZW1wOwogICAgICAgIH0KICAgICAgICB0ZW1wLT5uZXh0ID0gbmV3X25vZGU7CiAgICAgICAgbmV3X25vZGUtPm5leHQgPSBOVUxMOwogICAgfQogICAgcmV0dXJuIHRlbXA7Cn0=