Delete the node in the odd position 1. Solution 1: void LinkedList::deleteOdd() { int pos=1; Node * pre=head; Node * delnode=head; while(pre && delnode) { if(pos==1) { head=head->next; delete delnode; pre=head; } else if(pos%2==0) { delnode=pre->next; } else { pre->next=delnode->next; delete delnode; pre=pre->next; } pos++; } } 2. Solution 2: void LinkedList::deleteOdd() { Node *pre, *delnode; if (head) { delnode=head; head=head->next; delete delnode; pre=head; while(pre && pre->next) { delnode=pre->next; pre->next=delnode->next; delete delnode; pre=pre->next; } } } 3. Solution 3: Node* LinkedList::deleteOdd(Node* h) { If (!h) return 0; Node * l = deleteEven(h->next); Delete h; Return l; } Node* LinkedList::deleteEven(Node* h) { If (!h) return 0; h->next=deleteOdd(h->next); return h; }