Technically, it is not possible to reverse a transaction which has been confirmed and included into the valid chain asides with an attack on the network.
Technically, it is.
Occasionally the network experiences what is called a stale block. This is when two blocks are mined in very close succession. The first block isn't finished being broadcast round the network when the second block is also broadcast round the network. Some nodes accept the first block, and some accept the second. The conflict is only resolved when the next block is mined, and whichever block it was built on top of becomes the accepted block, with the other one being rejected and becoming a state block.
Now, usually any transactions which were included in stale block would also be included in either its replacement or the next block, and so wouldn't be reversed, but it is possible for a transaction not to be included and therefore go from 1 confirmation back to 0.
Although the transaction is reversed (going from 1 confirmation back to 0), it is not cancelled. The transaction will still exist in the mempool to be picked up by some future block, unless someone successfully double spends or replaces it.