Lista Liniara Simplu Inlantuita

classic Classic list List threaded Threaded
1 message Options
dragu_stelian dragu_stelian
Reply | Threaded
Open this post in threaded view
|

Lista Liniara Simplu Inlantuita

Buna ziua!
În următorul cod, am creat o singură listă liniara simplu inalntuita.


class Persons
{
    public String firstName;
    public String secondName;
    public String CNP;
    public String Email;

};

class NODE
{
    private NODE next;
    public Persons box = new Persons();
    public NODE() {}
    public NODE(String firstName, String secondName, String CNP, String Email)
    {
        box.firstName = firstName;
        box.secondName = secondName;
        box.CNP = CNP;
        box.Email = Email;
    }
    public NODE GetNext()
    {
        return next;
    }
    public void SetNext(NODE next)
    {
        this.next = next;
    }
};

class SinglyLinkedList
{
    private NODE head;
    public SinglyLinkedList()
    {
        head = null;
    }
    public boolean isEmpty()
    {
        return head == null;
    }
    public void AddNODE(NODE newNode)
    // public void AddNODE(NODE newNode)
    {
        NODE temp = null;
        if (isEmpty())
            head = temp = newNode;
        else
        {
            temp.SetNext(newNode);
            temp = newNode;
        }
        temp.SetNext(null);
    }
    public void Print()
    {
        NODE temp = head;
        while (temp != null)
        {
            System.out.print("\n First Name   : " + temp.box.firstName);
            System.out.print("\n Second Name  : " + temp.box.secondName);
            System.out.print("\n CNP          : " + temp.box.CNP);
            System.out.print("\n Email        : " + temp.box.Email);
            temp = temp.GetNext();
            System.out.print("\n");
        }
    }
};

public class MyClass
{
    public static void main(String args[])
    {
        SinglyLinkedList ptr = new SinglyLinkedList();

        NODE obj1 = new NODE("Dragu", "Stelian", "1811226284570", "dragu_stelian@yahoo.com");
        NODE obj2 = new NODE("Popescu", "Mircea", "1891226284462", "popescu.mircea@yahoo.com");
       
        ptr.AddNODE(obj1);
        ptr.AddNODE(obj2);

        ptr.Print();
    }
}


În linia AddNODE (obj1) am apelat funcția AddNODE, functie care primește ca parametru un obiect obj1 de tip NODE.
Problema este ca in cod funcția AddNODE (NODE newNode) trebuie să primeasca ca parametru un obiect.
Mentionez ca acest cod l-am facut mai intai in C++.
Iar in C++ functia ptr->AddNODE(&obj1); se apeleaza printr-un pointer SinglyLinkedList *ptr = new SinglyLinkedList(), functie care primeste ca parametru referinta unui obiect, iar in cod functia AddNODE(NODE *newNode) primeste ca parametru un pointer de tipul *newNode, ceea ce este ok.
Am sa postez si codul in C++, pentru a vedea codul pe care am vrut sa il trec in Java.

#include <iostream>
#include <cstring>
using namespace std;

struct Persons
{
    string firstName;
    string secondName;
    string CNP;
    string Email;
};

class NODE
{
private:
    NODE *next;
    NODE *previous;
public:
    Persons box;
    NODE(string firstName, string secondName, string CNP, string Email)
    {
        box.firstName = firstName;
        box.secondName = secondName;
        box.CNP = CNP;
        box.Email = Email;
    }
    NODE* GetNext()
    {
        return next;
    }
    void SetNext(NODE *next)
    {
        this->next = next;
    }
};

class SinglyLinkedList
{
private:
    NODE *head;
public:
    SinglyLinkedList()
    {
        head = NULL;
    }
    bool isEmpty()
    {
        return head == NULL;
    }
    void AddNODE(NODE *newNode)
    {
        NODE *temp;
        if (isEmpty())
            head = temp = newNode;
        else
        {
            temp->SetNext(newNode);
            temp = newNode;
        }
        temp->SetNext(NULL);
    }
    void Print()
    {
        NODE *temp = head;
        while (temp != NULL)
        {
            cout << "\n First Name  : " << temp->box.firstName;
            cout << "\n Second Name : " << temp->box.secondName;
            cout << "\n CNP         : " << temp->box.CNP;
            cout << "\n Email       : " << temp->box.Email;
            temp = temp->GetNext();
            cout << endl;
        }
    }
};

int main()
{
    SinglyLinkedList *ptr = new SinglyLinkedList();

    NODE obj1("Dragu", "Stelian", "1911226284570", "dragu_stelian@yahoo.com");
    NODE obj2("Popescu", "Mircea", "1891226284462", "popescu.mircea@yahoo.com");
    NODE obj3("David", "Adrian", "1971226284462", "david_adrian@yahoo.com");

    ptr->AddNODE(&obj1);
    ptr->AddNODE(&obj2);
    ptr->AddNODE(&obj3);

    ptr->Print();
    return 0;
}

Astept ceva indicatii.
Multumesc!