A* pseudocode

1 Create a node containing the goal state node_goal
2 Create a node containing the start state node_start
3 Put node_start on the open list
4 while the OPEN list is not empty
5 {
6 Get the node off the open list with the lowest f and call it node_current
7 if node_current is the same state as node_goal we have found the solution; break from the while loop
8     Generate each state node_successor that can come after node_current
9     for each node_successor of node_current
10     {
11         Set the cost of node_successor to be the cost of node_current plus the cost to get to node_successor from node_current
12         find node_successor on the OPEN list
13         if node_successor is on the OPEN list but the existing one is as good or better then discard this successor and continue
14         if node_successor is on the CLOSED list but the existing one is as good or better then discard this successor and continue
15         Remove occurences of node_successor from OPEN and CLOSED
16         Set the parent of node_successor to node_current
17         Set h to be the estimated distance to node_goal (Using the heuristic function)
18          Add node_successor to the OPEN list
19     }
20     Add node_current to the CLOSED list
21 }