#include <stdio.h>
#include <stdlib.h>
#define COUNT_NODES 10
typedef struct N
{
int val;
struct N* next;
}Node;
void addNode(Node** root, int val)
{
Node
* newNode
= malloc(sizeof(Node
)); newNode->val = val;
newNode->next = *root;
*root = newNode;
}
/**
Index starts from 0
*/
void shiftNode(Node** rootNode, int nodeIndex, int shifts)
{
int i=1;
Node *pNode, *temp, *root = *rootNode;
if((shifts <= 0) || (nodeIndex < 0))
{
return;
}
if(nodeIndex != 0)
{
for(i=1; i<nodeIndex; i++)
{
root = root->next;
}
pNode = root->next;
root->next = pNode->next;
}
else
{
*rootNode = root->next;
pNode = root;
root->next = pNode->next;
}
for(i=0; i<shifts; i++)
{
root = root->next;
}
temp=root->next;
root->next = pNode;
pNode->next=temp;
}
void print(Node* root)
{
while(root)
{
root = root->next;
}
}
int main()
{
int i=0;
Node* root = NULL;
while(i<COUNT_NODES)
{
i++;
}
print(root);
shiftNode(&root, 0, 2);
print(root);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBDT1VOVF9OT0RFUyAxMAp0eXBlZGVmIHN0cnVjdCBOCnsKICAgIGludCB2YWw7CiAgICBzdHJ1Y3QgTiogbmV4dDsKfU5vZGU7Cgp2b2lkIGFkZE5vZGUoTm9kZSoqIHJvb3QsIGludCB2YWwpCnsKICAgIE5vZGUqIG5ld05vZGUgPSBtYWxsb2Moc2l6ZW9mKE5vZGUpKTsKICAgIG5ld05vZGUtPnZhbCA9IHZhbDsKICAgIG5ld05vZGUtPm5leHQgPSAqcm9vdDsKICAgICpyb290ID0gbmV3Tm9kZTsKfQoKLyoqCkluZGV4IHN0YXJ0cyBmcm9tIDAKKi8Kdm9pZCBzaGlmdE5vZGUoTm9kZSoqIHJvb3ROb2RlLCBpbnQgbm9kZUluZGV4LCBpbnQgc2hpZnRzKQp7CiAgICBpbnQgaT0xOwogICAgTm9kZSAqcE5vZGUsICp0ZW1wLCAqcm9vdCA9ICpyb290Tm9kZTsKIAlpZigoc2hpZnRzIDw9IDApIHx8IChub2RlSW5kZXggPCAwKSkKIAl7CiAJCXJldHVybjsKIAl9CiAJCiAgICBpZihub2RlSW5kZXggIT0gMCkKICAgIHsKICAgIAlmb3IoaT0xOyBpPG5vZGVJbmRleDsgaSsrKQogICAgCXsKICAgICAgICAJcm9vdCA9IHJvb3QtPm5leHQ7CiAgICAJfQogICAgCXBOb2RlID0gcm9vdC0+bmV4dDsKICAgIAlyb290LT5uZXh0ID0gcE5vZGUtPm5leHQ7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAJKnJvb3ROb2RlID0gcm9vdC0+bmV4dDsKICAgIAlwTm9kZSA9IHJvb3Q7CiAgICAJcm9vdC0+bmV4dCA9IHBOb2RlLT5uZXh0OwogICAgfQogCiAgICBmb3IoaT0wOyBpPHNoaWZ0czsgaSsrKQogICAgewogICAgICAgIHJvb3QgPSByb290LT5uZXh0OwogICAgfQogICAgdGVtcD1yb290LT5uZXh0OwogICAgcm9vdC0+bmV4dCA9IHBOb2RlOwogICAgcE5vZGUtPm5leHQ9dGVtcDsKfQoKdm9pZCBwcmludChOb2RlKiByb290KQp7CiAgICB3aGlsZShyb290KQogICAgewogICAgICAgIHByaW50ZigiJWQgLT4gIiwgcm9vdC0+dmFsKTsKICAgICAgICByb290ID0gcm9vdC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiRU5EXG4iKTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgaT0wOwogICAgTm9kZSogcm9vdCA9IE5VTEw7CiAgICBzcmFuZCgxMjM0KTsKICAgIHdoaWxlKGk8Q09VTlRfTk9ERVMpCiAgICB7CiAgICAgICAgYWRkTm9kZSgmcm9vdCwgcmFuZCgpKTsKICAgICAgICBpKys7CiAgICB9CiAgICBwcmludChyb290KTsKICAgIHNoaWZ0Tm9kZSgmcm9vdCwgMCwgMik7CiAgICBwcmludChyb290KTsKICAgIHJldHVybiAwOwp9Cg==