Because a deck of cards and a shuffled deck of cards are so similar, it makes somewhat more sense to combine them into a single structure, rather than have to declare and manipulate them separately. Our final Deck structure will consist of two arrays—one of an ordered set of cards and another of pointers to cards in that deck, which can then be shuffled as needed. We will add additional information to the Deck structure to keep track of whether the deck is shuffled and how many cards have been dealt.
As we enhance our Deck structure and create/modify operations on the new structure, you should notice how little any of the other structures and methods already created will need to be changed, if at all.