A successive cancellation stack (SCS) decoding algorithm is proposed to improve the performance of polar codes. Unlike the conventional successive cancellation decoder which determines the bits successively with a local optimal strategy, the SCS algorithm stores a number of candidate partial paths in an ordered stack and tries to find the global optimal estimation by searching along the best path in the stack. Simulation results in the binary-input additive white Gaussian noise channel show that the SCS algorithm has the same performance as the successive cancellation list (SCL) algorithm and can approach that of the maximum likelihood algorithm. Moreover, the time complexity of the SCS decoder is much lower than that of the SCL and can be very close to that of the SC in the high SNR regime.