LL(1) parsing table construction
Let's start with the general case.
Given a production of a grammar, let's say A -> α where α is a general string, to compute the LL(1) parsing table T the algorithm says:

foreach(A -&gt; α in the grammar):
  write A -&gt; α in T[A,b], ∀  b ∈ first(α);
  if ( ℇ ∈ first(α) ):
     write A -&gt; α in T[A,x], ∀ x ∈ follow(A);


If at the end of the algorithm you have any cell in the table T with more than one entry then the grammar is not LL(1), as in your case.
To run this algorithm you need to compute the set of firsts and follow of a symbol. I see you did right the follows sets, but you mistake in the firsts set of E. So here is the algorithm to compute the firsts set of a symbol X:

if(X is a terminal symbol):
  first(X) = X;
  break;
if (X -&gt; ℇ ∈ productions of the grammar):
  first(X).add({ ℇ });
foreach(X -&gt; Y1....Yn ∈ productions of the grammar):
  j = 1;
  while (j &lt;= n):
    first(X).add({ b }), ∀ b ∈ first(Yj) ;
    if ( ℇ ∈ first(Yj)):
       j ++;
    else:
       break;
if(j = n+1):
  first(X).add({ ℇ });


So going back to your example:

First(E) = {a,y,z,c,x}


and in the table:

T[E,$] = E -&gt; ABC