Sort the linked list according to the actual values:
/* The structure of the Linked list Node is as follows:
struct Node
{
Node* next;
int data;
}; */
void sortList(Node** head)
{
// Your Code Here
Node *tmp=(*head)->next;
Node *prevHead;
Node *tmp2=new Node;
Node *node;
bool f=0;
while(tmp)
{
if(tmp->data<0)
{
if(f==0)
prevHead=tmp;
f=1;
tmp2->data=tmp->data;
tmp2->next=node;
node=tmp2;
}
tmp=tmp->next;
}
if(prevHead)
prevHead->next=(*head);
(*head)=node;
}
/* Link list node
struct Node
{
int data;
Node* next;
}*/
// This function should delete node from linked list. The function
// may assume that node exists in linked list and is not last node
void deleteNode(Node *node)
{
// Your code here
Node *tmp=node->next;
node->data=tmp->data;
node->next=tmp->next;
}
// the problem description is confusing
/*struct node
{
int data;
struct node *next;
struct node *prev;
};
*/
void deleteNode(struct node **head_ref, struct node *del)
{
if(del==*head_ref)
{
*head_ref=(*head_ref)->next;
return;
}
node *tmp=(*head_ref)->next;
while(tmp!=del)
{
tmp=tmp->next;
}
if(tmp==NULL)
return;
node *prv = tmp->prev;
node *nxt= tmp->next;
if(prv!=NULL)
prv->next=nxt;
if(nxt!=NULL)
nxt->prev=prv;
}
/* The structure of linked list is the following
struct node
{
int data;
node* next;
}; */
// function which splits the circular linked list. head is pointer
// to head node of given lined list. head1_ref1 and *head_ref2
// are pointers to head pointers of resultant two halves.
void splitList(struct node *head, struct node **head1_ref,
struct node **head2_ref)
{
// your code goes here
*head1_ref=head;
node *tmp=head;
node *prev;
tmp=head->next;
int cnt=1;
while(tmp!=head)
{
cnt+=1;
prev=tmp;
tmp=tmp->next;
}
int total;
if(cnt%2)
total=cnt/2+1;
else
total=cnt/2;
tmp=head;
for(int i=2;i<=total;i++)
{
tmp=tmp->next;
}
node *tmp2=tmp->next;
tmp->next=(*head1_ref);
(*head2_ref)=tmp2;
prev->next=(*head2_ref);
}
/* The structure of the Linked list Node is as follows:
sort a list
struct Node
{
Node* next;
int data;
}; */
void sortList(Node** head)
{
// Your Code Here
Node *tmp=(*head);
Node *prev=(*head);
Node *bottom;
Node *cur=prev->next;
while(cur)
{
if(cur->data<0)
{
Node *tmp2=new Node;
tmp2->data=cur->data;
tmp2->next=tmp;
tmp=tmp2;
if(bottom==NULL)
bottom=tmp;
prev->next=cur->next;
cur=cur->next;
}
else
{
prev=cur;
cur=cur->next;
}
}
// tmp2->data=100;
if(bottom)
{ bottom->next=(*head);
(*head)=tmp;
}
}