
import java.io.*;
public class Simple {
Node head = null;
Node tail = null;
class Node {
int data;
Node next;
Node(int d)
{
data = d;
next = null;
}
}
Node DeleteNodesfromBothEnds(int k)
{
if (head == null)
return head;
Node firstPrev = null, secondPrev = null;
Node fast = head;
for (int i = 0; i < k - 1; ++i) {
firstPrev = fast;
fast = fast.next;
}
Node slow = head;
while (fast != null
&& fast.next != null) {
secondPrev = slow;
slow = slow.next;
fast = fast.next;
}
if (firstPrev == secondPrev) {
if (firstPrev == null) {
head = head.next;
}
else {
firstPrev.next
= firstPrev.next.next;
}
}
else if (firstPrev != null && secondPrev != null
&& (firstPrev.next == secondPrev
|| secondPrev.next == firstPrev)) {
if (firstPrev.next == secondPrev)
firstPrev.next
= secondPrev.next.next;
else
secondPrev.next
= firstPrev.next.next;
}
else {
if (firstPrev == null) {
head = head.next;
}
else {
firstPrev.next
= firstPrev.next.next;
}
if (secondPrev == null) {
head = head.next;
}
else {
secondPrev.next
= secondPrev.next.next;
}
}
return head;
}
public void push(int new_data)
{
Node new_node = new Node(new_data);
if (head == null) {
head = new_node;
tail = new_node;
}
else {
tail.next = new_node;
tail = new_node;
}
}
public void printList()
{
Node tnode = head;
while (tnode != null) {
System.out.print(tnode.data + " ");
tnode = tnode.next;
}
}
public static void main(String[] args)
{
Simple llist = new Simple();
llist.push(1);
llist.push(2);
llist.push(3);
llist.push(4);
llist.push(5);
llist.push(6);
int K = 3;
llist.DeleteNodesfromBothEnds(K);
llist.printList();
}
}
0 comments:
Post a Comment