Calculating worklist with live variable analysis
first of all, this will be my first post in here, so if I can't express myself clearly, I am open to all questions and suggestions.
So let's start with your first question, about the initial worklist and how should it look like? In your example, there are four blocks if we show it on control flow graph, we get :

Here we have 4 blocks or as the algorithm calls, &quot;nodes&quot;. We create our initial worklist as a FIFO construct. So initially we have something like this :

Now, we will initialize the algorithm. In initialization part, we assign all in and out functions to empty set. So in[1], in[2].... out[3], out[4] will be empty. Also we have created our list in FIFO construct such as W = 4,3,2,1. Now we start the loop.
We start with w.pop = 4. As the algorithm suggests, out[4] = union of successor nodes' in functions. But for node 4, there is no successor so it will be again empty, {} . For in[4] = use [4] U (out[n] - def[n]) = {x,y} U ({} -{}) = {x,y}. Then we check if in[4] has changed or not. The answer is yes, it changed because it was an empty set initially but it updated and become {x,y}. So we should add our work list its predecessors where it is node 3. Now the equations have become in[1], in[2], in[3] = {} , in[4] = {x,y} and out [1], ...out[4] = {}.
Now we continue with our new worklist w = 3,3,2,1. So now we have 3 as the head. out[3] = in[4] = {x,y} and in[3] = use[3] U (out[3] - def[3]) = {}U ({x,y} -{x}) = {y}. Is our new in[3] is different? Again the answer is yes. Then, we add its predecessor 2 to our list. Our list becomes w = 2,3,2,1.
We continue to do it out[2] becomes in[3] = {y} and in[2] = {} U ({y} - {y} ) = {}. In this situation there is no update for in[2]. Because it was {} and still it is. Then we do not add its predecessor to work list, w =3,2,1.
We do the same things for 3 and 2, nothing changes. Then finally we came to the node 1. out[1] = in[2] = {} and in[1] = {}. So it does not change. And finally we finish our list, it became empty. And the algorithm terminates with the equations:
in[1] = {}
in[2] = {}
in[3] = {y}
in[4] = {x,y}
out[1] = {}
out[2] = {y}
out[3] = {x,y}
out[4] = {}
I hope it helps. If you have any questions remaining you can post here or ask me via private message (I don't know if this platform has a functionality for this). If you think that I made some mistakes, that could happen, please let me know.