Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <time.h>
- using namespace std;
- class Node{
- public:
- int key;
- double d;
- char c;
- Node *next; //wskaznik na nasepny element
- Node();
- };
- Node::Node(){
- next = 0; //konstruktor
- }
- class List{
- public:
- Node *head, *tail; //wskaznik na poczatek,koniec listy
- /*1*/ void add_node(int key);//przypadek w ktorym jest juz taki key(ma wyswietlic blad)
- /*2*/ void add_X_node(int quantity);
- /*3*/ void find_node(int key);//przypadek w ktorym element nie istnieje
- /*4*/ void remove_node(int key);//przypadek w ktorym element nie istnieje
- /*5*/ void show_Y_nodes(int quantity);//wyswietla tylko key od poczatku listy
- /*6*/ void show_Z_nodes(int quantity);//wyswietla tylko key od konca listy
- /*7*/ int how_much_nodes();//wyswietla ilosc wezlow na liscie (moze byc dodatkowa zmienna)
- /*8*/ void remove_all_nodes();
- List();
- };
- List::List(){
- head = 0; //konstruktor
- tail = 0;
- }
- /*sprawdzanie czy juz istnieje wezel o danym kluczu-key
- void check(int key) {
- if(key==true){
- cout<<"BLAD! Juz istnieje wezel o takie wastorsci kluczowej! "<<endl;
- } else {
- List::add_node(key);
- }
- }
- */
- //1 (brak sprawdzenia czy juz istnieje wezel o danym kluczu-key)
- void List::add_node(int key){
- time_t czas;
- srand(time(&czas));
- Node *nowa = new Node;
- nowa->key = key;
- nowa->d = rand()%10000 - 1000;
- nowa->c = 'T';
- if(head==0){ //sprawdzenie czy to pierwszy element listy
- head = nowa;//jezeli tak to nowy element jest teraz poczatkim listy
- }
- else{
- //w przeiwnym wypadku wedrujemy na koniec listy
- Node *temp = head;
- while(temp->next){
- temp = temp->next;
- }
- temp->next = nowa;//ostatni element wskazuje na nasz nowy
- nowa->next = 0; //ostatni nie wskazuje nic
- }
- }
- //2
- void List::add_X_node(int quantity){
- List *temp = new List;
- time_t czas;
- srand(time(&czas));
- for(int i = 1; i<=quantity; i++){
- int k = rand()%99900+99;
- temp->add_node(k);
- }
- }
- //3
- void List::find_node(int key) {
- Node *temp = new Node;
- while(temp) {
- if(temp->key == key){
- cout<<"jest"<<endl;
- } else {
- cout<<"niema"<<endl;
- }
- }
- }
- //4 usuwanie wskaznika bez usuniecia obiektu
- void List::remove_node(int key){
- if(key==1){
- Node *temp = head;
- head = temp->next;
- }
- if(key>=2){
- int j = 1;
- Node *temp = head;
- while(temp){
- if((j+1)==key) break;
- temp = temp->next;
- j++;
- }
- if(temp->next->next==0){
- temp->next = 0;
- }else{
- temp->next = temp->next->next;
- }
- }
- }
- //5
- void List::show_Y_nodes(int quantity){
- Node *temp = head; //wskaznik na pierwszy element
- for(int i=0; i<quantity; i++){ //przewijamy wskaznik na nastepne elementy
- cout<<temp->key<<endl;
- temp = temp->next;
- }
- }
- //6
- void List::show_Z_nodes(int quantity){
- }
- //7
- int List::how_much_nodes(){
- }
- //8
- void List::remove_all_nodes(){
- }
- int main()
- {
- List *baza = new List;
- baza->add_node(1);
- baza->add_node(2);
- baza->add_node(3);
- baza->add_X_node(2);
- baza->show_Y_nodes(2);
- baza->find_node(2);
- baza->remove_node(3);
- baza->show_Y_nodes(3);
- /*
- baza->add_node(1);
- baza->add_node(2);
- baza->show_Y_nodes(3);
- cout<< baza->head->key<<"|"<<baza->head->c<<"|"<<baza->head->d<<endl;
- cout<<baza->head->next->key<<"|"<<baza->head->next->c<<"|"<<baza->head->next->d<<endl;
- cout<<baza->head->next->next->key<<endl;
- */
- /*
- ifstream file("inlab02.txt", ios::in);
- int x,k1,k2,k3,k4,k5;
- if(!file)
- {
- cerr << "Cant open" << endl;
- }
- file>>x>>k1>>k2>>k3>>k4>>k5;
- file.close();
- clock_t begin, end;
- double time_spent;
- begin = clock();
- // ****
- List *baza = new List;
- baza->find_node(k1);
- baza->add_X_node(x);
- baza->how_much_nodes();
- baza->show_Y_nodes(20);
- baza->add_node(k2);
- baza->show_Y_nodes(20);
- baza->add_node(k3);
- baza->show_Y_nodes(20);
- baza->add_node(k4);
- baza->show_Y_nodes(20);
- baza->add_node(k5);
- baza->remove_node(k3);
- baza->show_Y_nodes(20);
- baza->remove_node(k2);
- baza->show_Y_nodes(20);
- baza->remove_node(k5);
- baza->how_much_nodes();
- baza->find_node(k5);
- baza->show_Z_nodes(11);
- baza->how_much_nodes();
- baza->remove_all_nodes();
- // ****
- end = clock();
- time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
- cout<<"Czas: "<<time_spent<<endl;
- cout<<"-------------------------------------"<<endl;
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement