// Following is the node structure
/**************
class ListNode{
public:
int data;
ListNode* next;
};
ListNode* newListNode(int data){
ListNode *temp = new ListNode;
temp->data = data;
temp->next = NULL;
return temp;
}
***************/
ListNode* RemoveNodeWithGreaterLeft(ListNode *head) {
/*Write your code here.
*Don't write main().
*Don't take input, it is passed as function argument.
*Don't print output.
*Taking input and printing output is handled automatically.
*/
if(head == NULL){
return NULL;
}
if(head->next == NULL){
return head;
}
ListNode *temp = head;
ListNode *prev = NULL;
while(temp->next!=NULL){
prev = temp;
temp = temp->next;
if(prev->data > temp->data){
prev->next = temp->next;
}
}
return head;
}
Ly8gRm9sbG93aW5nIGlzIHRoZSBub2RlIHN0cnVjdHVyZQovKioqKioqKioqKioqKioKY2xhc3MgTGlzdE5vZGV7CglwdWJsaWM6CglpbnQgZGF0YTsKCUxpc3ROb2RlKiBuZXh0Owp9OwoKTGlzdE5vZGUqIG5ld0xpc3ROb2RlKGludCBkYXRhKXsKCUxpc3ROb2RlICp0ZW1wID0gbmV3IExpc3ROb2RlOwogICAgCXRlbXAtPmRhdGEgPSBkYXRhOwogICAgCXRlbXAtPm5leHQgPSBOVUxMOwogICAgCXJldHVybiB0ZW1wOwp9CioqKioqKioqKioqKioqKi8KCkxpc3ROb2RlKiBSZW1vdmVOb2RlV2l0aEdyZWF0ZXJMZWZ0KExpc3ROb2RlICpoZWFkKSB7CgkvKldyaXRlIHlvdXIgY29kZSBoZXJlLiAKCSpEb24ndCB3cml0ZSBtYWluKCkuCgkqRG9uJ3QgdGFrZSBpbnB1dCwgaXQgaXMgcGFzc2VkIGFzIGZ1bmN0aW9uIGFyZ3VtZW50LgoJKkRvbid0IHByaW50IG91dHB1dC4KCSpUYWtpbmcgaW5wdXQgYW5kIHByaW50aW5nIG91dHB1dCBpcyBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuCgkqLwogICAgCiAgICBpZihoZWFkID09IE5VTEwpewogICAgICAgIHJldHVybiBOVUxMOwogICAgfQogICAgaWYoaGVhZC0+bmV4dCA9PSBOVUxMKXsKICAgICAgICByZXR1cm4gaGVhZDsKICAgIH0KICAgIExpc3ROb2RlICp0ZW1wID0gaGVhZDsKICAgIExpc3ROb2RlICpwcmV2ID0gTlVMTDsKCXdoaWxlKHRlbXAtPm5leHQhPU5VTEwpewogICAgICAgIHByZXYgPSB0ZW1wOwogICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIGlmKHByZXYtPmRhdGEgPiB0ZW1wLT5kYXRhKXsKICAgICAgICAgICAgcHJldi0+bmV4dCA9IHRlbXAtPm5leHQ7CiAgICAgICAgfQogICAgICAgCiAgICB9CiAgICByZXR1cm4gaGVhZDsKfQ==