Plik naglowek.h
Kod: Zaznacz cały
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
const int ILOSC = 10000;
class Node
{
private:
int liczba;
Node *next;
public:
Node(int i) { liczba = i; next = NULL; }
int Liczba() { return liczba; }
Node * Next() { return next; }
void changeNext(Node * n) { next = n; }
};
class List
{
private:
Node * L;
public:
List() { L = NULL; }
~List() { removeallNode (); }
void addNode(Node * n); //dodaje wezel n na początek listy
void printNode(); //drukuje listę
void removeallNode(); //usuwa całą listę
Node * locateNode(int i); //zwraca wskaźnik do wezla zawierającego wartość i
};
Kod: Zaznacz cały
#include "naglowek.h"
using namespace std;
// metody klasy Listy
void List::addNode(Node * n) //dodaje wezel n na początek listy
{
n->changeNext (L);
L = n;
}
void List::printNode() //drukuje listę
{
Node *q;
q = L;
while (q != NULL)
{
cout << q -> Liczba() << endl;
q = q -> Next();
}
}
void List::removeallNode() //usuwa całą listę
{
Node * q;
while (L != NULL)
{
q = L;
L = L->Next();
delete q;
}
}
Node * List::locateNode(int i) //zwraca wskaźnik do wezla zawierającego wartość i
{
Node *q;
q = L;
while ((q != NULL) && (q -> Liczba() != i))
q = q -> Next ();
return q;
}
// funkcja interfejsu uzytkownika
void menu()
{
cout << "****************************\n"
<< "* Lista pojedynczo wiazana *\n"
<< "****************************\n"
<< "\n\n1 - dodawanie liczby na poczatek listy\n"
<< "0 - wyjscie z programu\n"
<< "Twoj wybor?\t";
}
Kod: Zaznacz cały
#include "naglowek.h"
using namespace std;
void menu();
int main()
{
ofstream Wy;
Wy.open("czasy.txt");
Wy << "Dodaje element na poczatek listy:\n";
Wy << "Ilosc elementow: Czas trwania pojedynczej operacji:\n";
int wybor, liczba;
List lista[ILOSC];
clock_t time1, time2;
do
{
menu();
cin >> wybor;
if (wybor == 1)
{
cout << "\n\nPodaj ilosc elementow listy:\t";
cin >> liczba;
Node * q[ILOSC][liczba];
for (int j = 0; j < ILOSC; ++j)
for (int i = 0; i < liczba; ++i)
{
q[j][i] = new Node(i);
lista[j].addNode(q[j][i]);
}
Node * dodaj[ILOSC];
time1 = clock();
for (int i = 0; i < ILOSC; ++i)
{
dodaj[i] = new Node(1000);
lista[i].addNode(dodaj[i]);
}
time2 = clock();
double czas = double ((time2-time1)/CLOCKS_PER_SEC);
cout << "Czas wykonania operacji dodania elementu dla " << ILOSC << " list: " << czas << endl;
cout << "Czas wykonania pojedynczej operacji dodania: " << czas / ILOSC << endl;
Wy << liczba << " " << czas / ILOSC << endl;
for (int i = 0; i < ILOSC; ++i)
lista[i].removeallNode();
}
cin.get();
cin.get();
system ("CLS");
}
while (wybor != 0);
cout << "Program zakonczony.\n";
return 0;
}