1.) What are the differences between a linked list and a stack?
2.) What are the differences between a stack and a queue?
3.) Explain exactly why a reference variable can’t be changed once it is set.
For questions 4 – 8, write the required statements to accomplish each. Assume that all the manipulations occur in main and assume the following structure definition:
struct gradeNode {
char lastName[ 20 ];
double grade;
struct gradeNode *nextPtr;
};
4.) Create a pointer to the start of the list called startPtr. (The list is empty!)
5.) Create a new node of type struct gradeNode that is pointed to by a pointer newPtr of type struct gradeNode *. Assign the string “Jones” to member lastName and the value 91.5 to member grade. Provide any necessary declarations and statements.
6.) Assume that the list pointed to by startPtr is maintained in alphabetical order. Provide the statements necessary to insert the following node properly: “Pritchard”, 66.5 (Note: you do not know what is in the list, only that it is maintained in alphabetical order.)
Use pointers previousPtr, currentPtr and newPtr to perform the insertions. Assume that newPtr points to the new node.
7.) Write a while loop that prints the data in each node of the list. Use pointer currentPtr to move along the list.
8.) Write a while loop that deletes all the nodes in the list and frees the memory associated with each node. Use pointer currentPtr and pointer tempPtr to walk along the list and free memory, respectively.
9.) Write the code to declare a structure “myNode” that holds an integer value and a next pointer.
10.) Assume you have a linked list of “myNode” structures and the pointer “head” points to the first node of the list. Write a function that takes the head pointer as a parameter and returns a pointer to the last node in the list.
11.) Assume you have a linked list of “myNode” structures and the pointer “head” points to the first node of the list. Write a function that takes the head pointer as a parameter and a second parameter which is the number to search for. The function returns a pointer to the node if the number is found and NULL if the number is not in the list.
12.) Assuming the following structure definition write a proper push function to save a number to a list used as a stack.
struct Node
{
int number;
struct Node *next;
};
13.) Assuming the previous structure definition from problem 12, write a proper remove function to remove a number from a list used as a queue.