public Node Next { get; set; }
public char Value { get; set; }
public static void Main()
var source = "abbbcbbba";
for(int i = 0, len = source.Length; i < len;){
node.Next = i < len ? new Node() : null;
Console.WriteLine(CheckPalindrome(node).ToString());
private static bool CheckPalindrome(Node node)
Node linkSecondShadow = null;
bool isOdd = (i + 1) % 2 != 0;
linkSecond = linkSecond.Next;
Node a = linkSecondShadow;
linkSecondShadow = linkSecond;
linkSecond = linkSecond.Next;
linkSecondShadow.Next = a;
return Bubbling(linkSecondShadow, linkSecond);
Node a = linkSecondShadow;
linkSecondShadow = linkSecond;
linkSecondShadow.Next = a;
linkSecond = linkSecond.Next;
private static bool Bubbling(Node linkSecond, Node node)
Node linkSecondShadow = node;
if (node.Value != linkSecond.Value) {
Node a = linkSecondShadow;
linkSecondShadow = linkSecond;
linkSecond = linkSecond.Next;
linkSecondShadow.Next = a;