I want to create a link list that has two record,
and insert another record in between the two.
However my program is not working properly in the sense that the linked list did not really re-link after I commanded it to.

Code:
/* This program will attempt to insert a record in between two records */

#include <iostream>

using namespace std;

struct list{

char event[20];
int year;
list *next;
}* root, event1, event2;


void insert(list*, char incident[20], int);

int main()
{
 char event[20];
 int year;

 list event1 = { "World War I", 1914};
 list event2 = { "World War II", 1939};

 root = &event1;
 event1.next = &event2;
 event2.next = NULL;

 cout<<"Please enter an event and a date in between 1914 and 1939."<<endl;
 cin>>event>>year;

 insert(root, event, year);

 return 0;
}

 void insert(list *head, char incident[20], int year)
{
 list event_between;
 event_between.event[20] = incident[20];
 event_between.year = year;

 //The pointer in event1 should point to the reference of event_between and relink the linked list
 event1.next =&event_between;
 event_between.next = &event2;
 event2.next=NULL;

 cout<<"The new list has the following entries: "<<endl;
 while(head!=NULL)
 {
 cout<<head->event<<' '<<head->year;
 cout<<endl;
 head=head->next;
 }
}
Could you also please give me some pointers how on to reduce the size of this program?
I'm only beginning C++, thanks for all helps