Node1

import java.io.*;
class Node1 {
private int data;
private Node1 vidare;
private boolean empty;
//konstruktor
public Node1(int in, Node1 vid) {
vidare=vid;
empty=false;
data = in;
}
public Node1() {
empty=true;
}
//klassiska primitiver
public Node1 concat(int in) {
Node1 n = new Node1(in,this);
return n;
}
public int first() {
return data;
}
public Node1 rest() {
return vidare;
}
public boolean isEmpty() {
return empty;
}
public void print(){ //skriver ut listan
if (empty) {
return;
}
System.out.print(data+ " ");
rest().print();
}
public Node1 removeNthRek(int i) { //tar bort i:te elementet rekursivt
if (isEmpty()) { //kolla om listan är tom
System.out.println("Listan är tom.");
return null;
}
if (i<1) { //se om man anropat funktionen med fel index
System.out.println("Fel index! Elementen har index större än noll!");
return null;
}
if (i==1){ //hoppar över i
return rest();
}
return rest().removeNthRek(i-1).concat(first()); //fortsätter tills vi kommer fram till i
}
public Node1 removeNthIter(int i) {
if (empty) {
System.out.println("Listan är tom.");
return null;
}
if (i<1) {
System.out.println("Fel index! Elementen har index större än noll!");
return null;
}
Node1 temp=this;
Node1 temp1=new Node1();
for (int n=0; n< i-1; n++) { //sätt in data i elementen till vänster om i in i temp1
temp1=new Node1(temp.data,temp1);
temp=temp.vidare;
}
temp=temp.vidare; //hoppa över det i:te elementet
for (int n=0; n< i-1; n++) { //sätt ihop temp1 med resten av listan
temp=new Node1(temp1.data,temp);
temp1=temp1.vidare;
}
return temp;
}
public Node1 addLast(int el) {
if (isEmpty()) {
Node1 l=new Node1();
Node1 x=new Node1(el,l);
return x;
}
return new Node1(first(),rest().addLast(el));
}
public Node1 addTwo(Node1 l) {
if (l.isEmpty()) return this;
return this.addLast(l.first()).addTwo(l.rest());
}
public static void main(String[] args) {
int n=4;
Node1 l1=new Node1();
Node1 l2=l1.concat(9);
Node1 l3=l2.concat(7);
Node1 l4=l3.concat(5);
Node1 l5=l4.concat(3);
Node1 l6=l5.concat(1);
System.out.print("Listan före: ");
l6.print();
System.out.println();
System.out.print("Listan efter (rekursivt): ");
l6.removeNthRek(n).print();
System.out.println();
System.out.print("Listan efter (iterativt): ");
l6.removeNthIter(n).print();
System.out.println();
System.out.print("Testar en tom lista: ");
l1.removeNthRek(4);
System.out.print("Testar med en index mindre än 1: ");
l6.removeNthRek(-1);
l3.addLast(12).print();
l3.addTwo(l6).print();
}
}

Tillbaks till huvudsidan

email: Alireza.Niai_nouri.2077@student.uu.se