Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <string>
- #include <list>
- template <typename T>
- struct Node {
- T data;
- Node* next;
- };
- template <typename T>
- void showList(const Node<T>* head) {
- }
- template <typename T>
- Node<T>* arrayToList(const T tab[], size_t size) {
- std::list <Node> l;
- Node z = new Node(arr[size], null);
- l.push_front(z);
- for (int i = size-2; i >=0; i--) {
- Node x = new Node(arr[i],z)
- l.push_front(x);
- z = x;
- }
- return &z;
- }
- template<typename T, typename Pred>
- Node<T>* extract(Node<T>*& head, Pred predicate) {
- std::list <Node> tmp;
- while (*head!= NULL) {
- if (predicate(*head->data)) {
- tmp.push_back(*head);
- }
- }
- return tmp;
- }
- template <typename T>
- void deleteList(Node<T>*& head) {
- head = null;
- }
- bool isLong(const string& s) { return s.size() >= 5; }
- int main() {
- int tabi[] = { 2,1,4,3,6,5,7,8 };
- size_t sizei = sizeof(tabi) / sizeof(tabi[0]);
- Node<int> *listAi = arrayToList(tabi, sizei);
- showList(listAi);
- Node<int> *listBi = extract(
- listAi, [](int n)->bool {return n % 2 == 0});
- showList(listAi);
- showList(listBi);
- deleteList(listAi);
- deleteList(listBi);
- string tabs[]{ "Kasia", "Ola", "Ala",
- "Zosia", "Ela", "Basia" };
- size_t sizes = sizeof(tabs) / sizeof(tabs[0]);
- Node<string> *listAs = arrayToList(tabs, sizes);
- showList(listAs);
- Node<string> *listBs = extract(listAs, isLong);
- showList(listAs);
- showList(listBs);
- deleteList(listAs);
- deleteList(listBs);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement