Q 1
Q 1
|| ||______//add first
|| ||______//add many
|| ||______//add if age > 4
|| ||______//add element have max age
||
||___INSERT____//insert position k
|| ||____//insert after position k
||
||___SEARCH____//search node
|| ||____//search node with string
|| ||____//search node with integer/double
||
||___DELETE____//delete node
|| ||____//delete all
|| ||____//delete at position k
|| ||____//delete first no age < 6
|| ||____//delete a node after position k
|| ||____//delete node after 2 node have age < 9
|| ||____//delete node thirdth have age < 6
|| ||____//delete node first after node have position
k
|| ||____//delete node after node have price > xPrice
|| ||____//delete 2 node last have age > 5
|| ||____//delete second biggest
||
||___SORT______//sort by string
|| ||______//sort by integer/ double
|| ||______//sort by for
|| ||______//sort 3 first element
||
||___SWAP______//swap min max
|| ||______//swap node max second with node min first
||
||___GET_______//get node at index k
|| ||_______//get node max
||
||___ORTHER____//traverse
|| ||____//replace a node
|| ||____//count number of node
|| ||____//reverse list
|| ||____//append another list
|| ||____//change name first
//add last
public void addLast(Person x){
Node q = new Node(x);
if(isEmpty()){head=tail=q;return;}
tail.next=q;tail=q;
}
//add first
public void addFirst(Person x){
Node p = new Node(x);
if(isEmpty()) {head = tail = p;}
else {p.next = head; head = p;}
}
//add many
public void addMany(String [] a, int [] b){
int n,i; n=a.length;
for(i=0;i<n;i++) addLast(new
Person(a[i],b[i]));
}
//insert position k
public void insertPositionK(Person x, int position)
{
if (isEmpty()) head = tail = new Node(x);
int count = 1;
Node p = head;
while (p!= null && count < position) {
p = p.next;
count ++;
}
Node temp = p.next;
p.next = new Node(x, temp);
}
//search node
public Node search(int x{
Node p = head;
while(p != null && p.info != x) p = p.next;
return p;
}
//delete node
public void dele(Node q){
Node f,p; f=null;p=head;
while(p!=null){
if(p==q) break;
f=p;p=p.next;
}
if(p==null) return;
if(f==null){
head=head.next;
if(head==null) tail=null;
return;
}
f.next=p.next;
if(f.next==null) tail=f;
}
//delete all
public void deleAll(int xAge){
Node q;
while(true){
q = searchByAge(xAge);
if(q==null) break;
dele(q);
}
}
//delete at position k
public void deleteAt(int k) {
if (isEmpty()) return;
if (k == 0) {//check if node is head
Node p = head;
head = head.next;
p.next = null;
} else {
Node p = getNode(k);//get node position k
if (p == null) return;
Node q = getNode(k - 1);//q is node before of p
// Remove p
q.next = p.next;
p.next = null;
if (p == tail) tail = q;
}
}
//sort by string
public void sort(){
Node pi,pj; Person x;
pi=head;
while(pi!=null){
pj=pi.next;
while(pj!=null){
if(pj.info.name.compareTo(pi.info.name)<0){
x=pi.info;pi.info=pj.info;pj.info=x;
}
pj=pj.next;
}
pi=pi.next;
}
}
x=pi.info;pi.info=pj.info;pj.info=x;
}
pj=pj.next;
}
pi=pi.next;
}
}
//sort by for
public void sortByFor(){
int n = (size() > 3) ? 3 : size();
int n = size();
// for(int i = n-3; i < n; i++) //last 3 element
// for(int j = i+1; j < n; j++) //first 3 element
for(int i = 0; i < n - 1; i++){
for(int j = i+1; j < n; j++){
Node pi = getNode(i);
Node pj = getNode(j);
if(pi.info.name.compareToIgnoreCase(pj.info.name) >
0){
Person temp = pi.info;
pi.info = pj.info;
pj.info = temp;
}
}
}
}
//traverse
public void traverse(){
MyList h=new MyList();
Node p=head;Person x;
while(p!=null)
{x=p.info;h.addFirst(x);
p=p.next;
}
head=h.head;tail=h.tail;
}
//replace a node
public void replace{
Node p = head;
while(p != null){
if(p.info.name.equals("xName")){// xName was
given
break;
}
p = p.next;
}
if(p != null){
p.info.name = yName;// yName was given
}
}
//reverse list
public void reverse() {
int n = size(), i, j;
for (i = 0, j = n - 1; i < j; i++, j--) {
Node pi = getNode(i);// create a node = getnode
index i
Node pj = getNode(j);// create a node = getnode
index j
Person temp = pi.info;// Note: change value of
node, not change node
pi.info = pj.info;
pj.info = temp;
}
}
//add first
return c;
{int n = size();
for (int i = 0; i < n - 1; i++)
{Node p = head;
return p;
void dele(Node q)
while(p!=null)
{if(p==q) break;
f=p;p=p.next;
if(p==null) return;
if(f==null)
{head=head.next;
if(head==null) tail=null;
return;
}
f.next=p.next;
if(f.next==null) tail=f;
//remove head
p.next = null;
//reverse a list
{int n = size();