Hello studentCJ,
To go along with and in addition to what coder77 has said some tips that might help:
In your subject line do not shout. Using all caps is considered shouting and a bit rude.
In your program the line
using namespace std;
is a bad idea and best not to use. There have been many posts here on the subject. Do a search if you want to know more.
For the struct; it is generally accepted the the name of a class or a struct should start with a capital letter. Regular variables should start with a lower case letter and anything defined as a constant should be in all caps.
The "insert" function gives the impression that this is a doubly linked list, but yhe struct is set up for a singly linked list.
Your functions need to be reworked. Most of what I see is just wrong.
I think you need to reread your book and get a better understanding of linked lists. These links may be of some help:
https://www.google.com/search?source=hp&ei=cTRsXPeYKoXHjwTZ74vYDA&q=c%2B%2B+doubly+linked+list&oq=c%2B%2B+doubly&gs_l=psy-ab.1.0.0l10.2918.13645..17290...0.0..0.86.825.11......0....1..gws-wiz.....0..35i39j0i131.LHlcJ54BT_Q
https://www.youtube.com/watch?v=k0pjD12bzP0
The youtube video that comes up after this should also help.
Of the two functions I looked at "initialize" should be called "reInitialize" based on the menu choice. This function should delete all nodes except head and set head's "next" and "prev" pointers to "nullptr" with the last step of setting "head" to "nullptr". Without deleting the current linked list as coder777 says you are creating a memory leak.
The "insert" function is misleading. At first I thought it was to insert in the middle of the list, but when looking at the variable "pos" it is actually adding to the end. Inside the function you create a block of memory for head. This should have been done long before you get here. Creating a block of memory for "prev" is not necessary because if it is not the "head" node, which has no previous, then previous already exists. The variables "curr" should be just a pointer then yo can use "newNode" to add to the list.
The if statement and while loop appear to be finding the end of the list, but you do nothing to add the "newNode" to the list.
I suggest working in small parts. First get the "insert", i.e., "add" function working properly before you tackle the other functions. Until you create a linked list that you can use there is no point on working on the other functions and once you have a proper linked list the other functions will be easier to change.
For what its worth when I first learned about linked lists we were taught to create a "head" and "tail" node pointers to work with. this way it makes it easier to start at the tail if you need to.
Hope that helps,
Andy