Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

You will implement singly linked lists in C. You will test your program by creating an ordered linked list of integers. You will then use

You will implement singly linked lists in C. You will test your program by creating an ordered linked list of integers. You will then use your implementation to write a program that creates a representation of a deck of cards and makes a random shuffle of the deck. The algorithms for implementing linked lists will be discussed in your classes. Therefore, this description does not list implementation details of the required functions.

Detailed requirements for linked lists implementation:

You will need to write several functions.

0. To represent a node in a linked list you can use a structure

typedef struct Node

{

SomeDataType data;

struct Node *next;

} ListNode;

where SomeDataType can be any C data type.

1. Write a function to make a new list. Your function should create a dummy head node to represent an empty list.

ListNode *newList(void) // returns a head of a new empty list

2. Write functions to insert elements into a list and to remove elements from a list

ListNode *removeNode(ListNode * prev); // removes the node after prev

ListNode *insertNode(ListNode *prev, SomeDataType data) // inserts a new node with data field data after prev

3. Write functions to count the number of elements in a list without the head and to print the list

int length(ListNode *head) // number of elements in the list

void printList(ListNode *head) // print the data fields for the entire list Note that printList will print the linked list implemented to support the second part of your project.

To test your code you will use it to make an ordered list of random integers. After that you will write functions to manipulate a deck of cards. You should assume that a full deck contains 52 cards: card values (A,2,3,4,5,6,7,8,9,10,J,Q,K) in four suits (Spades,Diamonds,Hearts,Clubs). You can use either integers or enums to represent cards and suits, but you should print card values using their symbols (A,2,. . . ,10,J,Q,K) and the suits using first letter of their name. Examples: (10,S),(A,C),(7,D) to stand for 10 of spades, ace of clubs, and 7 of diamonds.

Detailed instructions for ordered list of integers implementation: To test your linked list code you should generate 10 random numbers in the range [0..1000] and insert them in a ascending order into an empty list. Every time you generate a number you need to traverse the linked list and find a proper place for the number to be inserted. This means that you should not sort numbers before insertion. You should calculate the list length and print it together with the list after each number insertion. Note that for this part to work your data field should be of type int.

Detailed requirements for deck of cards manipulation: You will write a function to make a deck and a function to shuffle a deck of cards. To make a deck you loop through card values and suits and create pairs of values to represent the cards; those pairs are then inserted into the list representing the deck. To shuffle the deck you will write a random shuffle method that works as follows.

struct Node *randomShuffle(struct Node *olddeck) // returns new deck

{ int len = length(olddeck) Make a new linked list newdeck

for (int i=len-1; i>=0; i- -)

} j = random()%(i+1) move the jth card from olddeck to the front of newdeck

}

return newdeck

}

You can use removeNode and insertNode functions to move the cards from one deck to another. If you know how to do it you can just move a node while setting all links properly.

Basically it will be two different files that performs two different implementation with linked list. The first implementation is to insert, remove using integer

The second implementation is to do it with the card struct.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Beginning VB 2008 Databases

Authors: Vidya Vrat Agarwal, James Huddleston

1st Edition

1590599470, 978-1590599471

More Books

Students also viewed these Databases questions