class LinkedList{ public static void main(String[] a){ System.out.println(new LL().Start()); } } class Element { int Age ; int Salary ; boolean Married ; // Initialize some class variables public boolean Init(int v_Age, int v_Salary, boolean v_Married){ Age = v_Age ; Salary = v_Salary ; Married = v_Married ; return true ; } public int GetAge(){ return Age ; } public int GetSalary(){ return Salary ; } public boolean GetMarried(){ return Married ; } // This method returns true if the object "other" // has the same values for age, salary and public boolean Equal(Element other){ boolean ret_val ; int aux01 ; int aux02 ; int nt ; ret_val = true ; aux01 = other.GetAge(); if (!this.Compare(aux01,Age)) ret_val = false ; else { aux02 = other.GetSalary(); if (!this.Compare(aux02,Salary)) ret_val = false ; else if (Married) if (!other.GetMarried()) ret_val = false; else nt = 0 ; else if (other.GetMarried()) ret_val = false; else nt = 0 ; } return ret_val ; } // This method compares two integers and // returns true if they are equal and false // otherwise public boolean Compare(int num1 , int num2){ boolean retval ; int aux02 ; retval = false ; aux02 = num2 + 1 ; if (num1 < num2) retval = false ; else if (!(num1 < aux02)) retval = false ; else retval = true ; return retval ; } } class List{ Element elem ; List next ; boolean end ; // Initialize the node list as the last node public boolean Init(){ end = true ; return true ; } // Initialize the values of a new node public boolean InitNew(Element v_elem, List v_next, boolean v_end){ end = v_end ; elem = v_elem ; next = v_next ; return true ; } // Insert a new node at the beginning of the list public List Insert(Element new_elem){ boolean ret_val ; List aux03 ; List aux02 ; aux03 = this ; aux02 = new List(); ret_val = aux02.InitNew(new_elem,aux03,false); return aux02 ; } // Update the the pointer to the next node public boolean SetNext(List v_next){ next = v_next ; return true ; } // Delete an element e from the list public List Delete(Element e){ List my_head ; boolean ret_val ; boolean aux05; List aux01 ; List prev ; boolean var_end ; Element var_elem ; int aux04 ; int nt ; my_head = this ; ret_val = false ; aux04 = 0 - 1 ; aux01 = this ; prev = this ; var_end = end; while (!var_end && !ret_val){ var_elem = aux01.GetElem(); if (e.Equal(var_elem)){ ret_val = true ; if (aux04 < 0) { // delete first element my_head = aux01.GetNext() ; } else{ // delete a non first element System.out.println(0-555); aux05 = prev.SetNext(aux01.GetNext()); System.out.println(0-555); } } else nt = 0 ; if (!ret_val){ prev = aux01 ; aux01 = aux01.GetNext() ; var_end = aux01.GetEnd(); aux04 = 1 ; } else nt = 0 ; } return my_head ; } // Search for an element e on the list public int Search(Element e){ int int_ret_val ; List aux01 ; Element var_elem ; boolean var_end ; int nt ; int_ret_val = 0 ; aux01 = this ; var_end = end; while (!var_end){ var_elem = aux01.GetElem(); if (e.Equal(var_elem)){ int_ret_val = 1 ; } else nt = 0 ; aux01 = aux01.GetNext() ; var_end = aux01.GetEnd(); } return int_ret_val ; } public boolean GetEnd(){ return end ; } public Element GetElem(){ return elem ; } public List GetNext(){ return next ; } // Print the linked list public boolean Print(){ List aux01 ; boolean var_end ; Element var_elem ; aux01 = this ; var_end = end ; while (!var_end){ var_elem = aux01.GetElem(); System.out.println(var_elem.GetAge()); aux01 = aux01.GetNext() ; var_end = aux01.GetEnd(); } return true ; } } // this class invokes the methods to insert, delete, // search and print the linked list class LL{ public int Start(){ List head ; List last_elem ; boolean aux01 ; Element el01 ; Element el02 ; Element el03 ; last_elem = new List(); aux01 = last_elem.Init(); head = last_elem ; aux01 = head.Init(); aux01 = head.Print(); // inserting first element el01 = new Element(); aux01 = el01.Init(25,37000,false); head = head.Insert(el01); aux01 = head.Print(); System.out.println(10000000); // inserting second element el01 = new Element(); aux01 = el01.Init(39,42000,true); el02 = el01 ; head = head.Insert(el01); aux01 = head.Print(); System.out.println(10000000); // inserting third element el01 = new Element(); aux01 = el01.Init(22,34000,false); head = head.Insert(el01); aux01 = head.Print(); el03 = new Element(); aux01 = el03.Init(27,34000,false); System.out.println(head.Search(el02)); System.out.println(head.Search(el03)); System.out.println(10000000); // inserting fourth element el01 = new Element(); aux01 = el01.Init(28,35000,false); head = head.Insert(el01); aux01 = head.Print(); System.out.println(2220000); head = head.Delete(el02); aux01 = head.Print(); System.out.println(33300000); head = head.Delete(el01); aux01 = head.Print(); System.out.println(44440000); return 0 ; } }