Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Povezane liste.cpp : Povezane liste
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- struct Node
- {
- int value; // vrijednost
- Node *next; // pokazivač na sljedeći Node
- };
- void insertElementFront(Node *&head, int value);
- void insertElementEnd(Node *&head, int value);
- void displayList(Node *temp);
- int listLength(Node *temp);
- void searchElement(Node *temp, int value);
- void deleteElement(Node *&head, int value);
- void deleteHead(Node *&head);
- void deleteTail(Node *&head);
- int main()
- {
- Node *head = nullptr;
- Node *tail = nullptr;
- int izbor;
- do {
- system("cls");
- cout << "1. Unos na pocetak\n2. Unos na kraj\n3. Prikaz\n4. Duljina liste\n";
- cout << "5. Pretraga elementa\n6. Brisanje glave\n7. Brisanje repa\n8. Brisanje elementa\n";
- cout << "\nUnesite izbor: ";
- cin >> izbor;
- switch (izbor) {
- int broj;
- case 1:
- cout << "\nUnesite broj: ";
- cin >> broj;
- insertElementFront(head, broj);
- break;
- case 2:
- cout << "\nUnesite broj: ";
- cin >> broj;
- insertElementEnd(head, broj);
- break;
- case 3:
- displayList(head);
- break;
- case 4:
- listLength(head);
- break;
- case 5:
- cout << "\nUnesite broj: ";
- cin >> broj;
- searchElement(head, broj);
- break;
- case 6:
- deleteHead(head);
- break;
- case 7:
- deleteTail(head);
- break;
- case 8:
- cout << "\nUnesite broj: ";
- cin >> broj;
- deleteElement(head, broj);
- break;
- case 0:
- break;
- default:
- cout << "Niste unijeli dobar izbor! " << endl;
- break;
- }
- } while (izbor != 0);
- system("PAUSE");
- return 0;
- }
- void insertElementFront(Node *&head, int value)
- {
- Node *temp = new Node;
- temp->value = value;
- temp->next = head;
- head = temp;
- }
- void displayList(Node *temp)
- {
- if(temp == NULL)
- {
- cout << "Lista je prazna!" << endl;
- }
- else
- {
- while (temp != nullptr)
- {
- cout << temp->value << "\t";
- temp = temp->next;
- }
- cout << endl;
- }
- }
- int listLength(Node *temp)
- {
- int count = 0;
- if (temp == NULL)
- {
- cout << "Lista je prazna!" << endl;
- return 0;
- }
- else
- {
- while (temp != NULL)
- {
- count++;
- temp = temp->next;
- }
- return count;
- }
- }
- void insertElementEnd(Node *&head, int value)
- {
- Node *n = new Node;
- n->value = value;
- n->next = nullptr;
- Node *temp = head;
- if (temp == nullptr)
- {
- temp = n;
- head = temp;
- }
- else
- {
- temp = head;
- while (temp->next != NULL)
- {
- temp = temp->next;
- }
- temp->next = n;
- }
- }
- void searchElement(Node *temp, int value)
- {
- int found = 0;
- if (temp->value == value)
- {
- cout << "value: " << temp->value << " na adresi: " << temp << endl;
- found++;
- }
- while (temp->next != nullptr)
- {
- temp = temp->next;
- if (temp->value == value)
- {
- cout << "value: " << temp->value << " na adresi: " << temp << endl;
- found++;
- }
- }
- if (found == 0)
- {
- cout << "Element nije pronaden!" << endl;
- }
- else
- {
- cout << "Pronađeno je " << found << " elemenata." << endl;
- }
- }
- void deleteHead(Node *&head)
- {
- Node *temp = head;
- if (temp != 0)
- {
- head = temp->next;
- delete temp;
- }
- }
- void deleteElement(Node *&head, int value) //napravi sutra ;)
- {
- Node *temp = head;
- if (temp != 0 && temp->value == value)
- {
- head = temp->next;
- delete temp;
- }
- else
- {
- Node *prev = nullptr;
- while (temp->next != nullptr && temp->value != value)
- {
- prev = temp;
- temp = temp->next;
- }
- prev->next = temp->next;
- delete temp;
- }
- }
- void deleteTail(Node *&head)
- {
- Node *temp = head;
- if (head->next == nullptr)
- {
- head = nullptr;
- delete temp;
- }
- else
- {
- Node *prev = nullptr;
- while (temp->next != nullptr)
- {
- prev = temp;
- temp = temp->next;
- }
- prev->next = nullptr;
- delete temp;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement