Hi
i am having an assignment about link list and i have alot of troubles understanding them. so i would to ask for your help.
any contribution is great appreciate.

here is the assignment spec

"The European Commission has just announced an agreement whereby English will be the
official language of the EU rather than German, which was the other possibility. As part of
the negotiations, Her Majesty's Government conceded that English spelling had some room
for improvement and has accepted a 5 year phase-in plan that would be known as
"EuroEnglish": --
In the first year, "s" will replace the soft "c". Sertainly, this will make the sivil sevants jump
with joy. The hard "c" will be dropped in favor of the "k". This should klear up konfusion and
keyboards kan have one less letter.
There will be growing publik enthusiasm in the sekond year, when the troublesome "ph" will
be replaced with the "f". This will make words like "fotograf" 20% shorter.
In the 3rd year, publik akseptanse of the new spelling kan be expekted to reach the stage
where more komplikated changes are possible. Governments will enkorage the removal of
double letters, which have always ben a deterent to akurate speling. Also, al wil agre that the
horible mes of the silent "e"'s in the language is disgraceful, and they should go away.
By the 4th yar, peopl wil be reseptiv to steps such as replasing "th" with "z" and "w" with "v".
During ze fifz year, ze unesesary "o" kan be dropd from vords kontaning "ou" and similar
changes vud of kors be aplid to ozer kombinations of leters.
After zis fifz yer, ve vil hav a reli sensibl riten styl. Zer vil be no mor trubls or difikultis and
evrivun vil find it ezi tu understand ech ozer.
ZE DREM VIL FINALI KUM TRU!!
Program Action
1. Your program will get the name of the file containing the English to be converted as a
command line argument.
2. It will then read the file and build up the English message, character by character, in a
linked list. Each node in the list will contain a single character.
3. You will then apply the following rules to the message contained in the link list. These
rules will convert the English to Euro-English.
Replace all ‘c’ with ‘s’ if followed the characters ‘e’, ‘i’ or ‘y’, otherwise replace with
‘k’.
Replace all instances of ‘w’ with ‘v’.
Replace all instances of “ph” with the character ‘f’.
Replace all double characters with a single instance of the character.
If a word is more than 3 characters long and ends with an ‘e’ then this can be
removed.
Replace all instances of “th” with ‘z’.
Replace all instances of “ou” with ‘u’.
Replace all instances of “ea” with ‘e’.
If a word ends with “ed” then replace it with ‘d’.
Make sure with all of these changes that you keep the correct case.
4. As a final step, the program should then correctly free up all the memory used in the
linked list.
For example, the output of the program might would look like
Here is a message from an important visitor:
"Greetings, earthlings, I have come to rule you!"
Hello, Mother, I can't talk right now,
I am being harangued by a little green thingy.
Her is a mesag from an important visitor:
"Gretings, erzlings, I have kom to rul yu!"
Helo, Mozer, I kan't talk right nov,
I am being harangud by a litl gren zingy.
Details
While there are other data structures that would work, you must implement a “linked list
chars”. Do not use arrays for this. See assessment section.
A ‘word’ is defined as a string of alphanumeric characters that is preceded by a space or
punctuation character or no character and followed by a space or punctuation character or no
character.

Here is my code

Code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define SIZE 120

struct charRecord
{

   char letter;
   struct charRecord *next;

};
typedef struct charRecord charNode;

FILE* openFile(char *filename, char *mode);

void loadChar(char *filename, charNode **start);

void insertCharToList(charNode **start,char *letter);

void printList ( charNode *start);

void freeList(charNode **start);

charNode* newNode(char letter);

int main(int argc, char *argv[])
{

   charNode *start =NULL;
   char line[SIZE];
 
   /* Check command line arguments */

   if (argc != 2)
   {

      printf("\nERROR - Incorrect number of arguments\n");
      return 0;

   }

   loadChar(argv[1], &start);
   printList(start);
   freeList(&start);

   printf("i am in main");

 return 0;

}

/* 
Your program will get name of the file containning the english
to be converted as a command line argument
*/

FILE* openFile(char *filename, char *mode)

{
   /* open a FILE stream to filename with given mode */

   FILE *file = fopen(filename, mode);

   if (file == NULL)
   {

      printf("ERROR - Unable to open file %s\n", filename);
      exit(0);

   }

   return file;
}

/* it will tren read the file and build up the English message,
character by character in a SINGLE linked list.
Each Node in the list will contain a single chracter.
*/

void loadChar(char *filename, charNode **start)
{

   /* load emplyee records and add to linked list */

   char line[SIZE]; //, wordends[] = " \t\r\n\",;:~!#%^*()=+[]{}\\|<>?/";

   FILE *fin = openFile(filename, "r");
   int i;
   
   while (fgets(line, SIZE, fin) != NULL)
   {


   }

   if (!feof(fin))
   {

      printf("ERROR - unable to read lines in %s\n", filename);
      exit(0);

   }
   fclose(fin);

}

void insertCharToList(charNode **start,char *letter)
{

   /* insert word into list in alphabetical order */
   printf(" i am at insertTolist \n");
   int i;
   char line[SIZE];
   charNode *temp,*prev, *loc;

   for (i=0; i<SIZE; i++)
   {

      temp = newNode(line[i]);

   }

}


/*
you will need to apply the rules to the message contained in the link list.
*/

int applyRules()
{

 // rule 1  replace all instances of 'w' with 'v'
 
 // rule 2: replace all double characters with a single instance of the chracter.

 //rule 3: replace all instances of 'ph' with teh chracter 'f'
 
 //rule 4: Replace all instances of the 'th' with 'z'.
 
 //rule 5: Replace all instances of 'ou' with 'u'.

 //rule 6: Replace all intances of 'ea' with 'e'.
 
 //rule 7: Replace all 'c' with 's' if followed by the characters 'e','i' or 'y', otherwise replace with 'k'.
 
 //rule 8: if a word is more than 3 characters long and ends with an 'e' then this can be removed.

 // rule 9: If a word ends with "ed" then replace with "d".



}

/* the program should print out the the Euro english */
void printList ( charNode *start)
{

     /*
     print out the contents of the linked list
     start with the first item added
     */
   printf("i am printing\n");
   while (start != NULL)
   {
      printf("%c",start->letter);
      start = start->next;

   }
   printf("\n");
}


/* the programm should free all the memory used in the linked list */

void freeList(charNode **start)
{

   /* free up all word records in linked list */

  charNode *temp;

   while (*start != NULL)
   {
      temp = *start;
      *start = temp->next;
      free(temp);
   }

}

/* the program allocate memory for the linked list */

charNode* newNode(char letter)
{

   /* dynamicaly allocate memory for an charNode
      make sure it is initialised correctly
   */

   charNode *temp= (charNode *) malloc(sizeof(charNode));

   if (temp == NULL)
   {
      printf("WARNING - Memory allocation error\n");
      exit(EXIT_FAILURE);
   }

   temp->letter = letter;
   temp->next = NULL;

   return temp;

}
i am having problems of aplying the rules
and how to load up the files character by character and put them into a single link list.........
if you have any reference or anything that can help with my assignment please tell me
thanz for your help