KMP算法推导有关问题

KMP算法推导问题
C/C++ code

void get_next(string T, int *next)
{
   int i, j;
   i = 1;
   j = 0;
   next[1] = 0;
   while (i < T[0]) //假设T[0]是字符串的长度,这里是T[0] = 6
   {
         if (j == 0 || T[i] == T[j]) //这里看不明白,为什么要判断j == 0 或者  T[i] == T[j]
         {
              ++i;
              ++j;
              next[i] = j;
          }
          else
          { 
              j = next[j]; //这个也看不明白
           }
    }
}



------解决方案--------------------
设个断点,单步调试
------解决方案--------------------
在回去仔细看看KMP的递推公式j=next[j]不理解的话就说明KMP算法
思想你还没想明白
------解决方案--------------------
http://www.matrix67.com/blog/archives/115
请楼主先看看此文,了解一下kmp的思路