Advertisement
myloyo

list.h

Jun 7th, 2023 (edited)
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #pragma once
  2.  
  3. using namespace std;
  4. template <typename T>
  5. class list{
  6.     struct element{
  7.         T inf;
  8.         element* next;
  9.         element(T x) :inf(x), next(0) {}
  10.     };
  11.     int count = 0;
  12.     element* head;
  13.     int size;
  14.     element* findx(T x)
  15.     {
  16.         element* cur = head;
  17.         for (int i = 1; i < size; i++)
  18.         {
  19.             if (cur->inf == x)
  20.             {
  21.                 return cur;
  22.             }
  23.             cur = cur->next;
  24.         }
  25.     }
  26.     element* find(int index)
  27.     {
  28.         if ((index < 0) || (index > size))
  29.         {
  30.             return nullptr;
  31.         }
  32.         else
  33.         {
  34.             element* cur = head;
  35.             for (int i = 1; i < index; i++)
  36.             {
  37.                 cur = cur->next;
  38.             }
  39.             return cur;
  40.         }
  41.     }
  42. public:
  43.     list() :head(0), size(0) {}
  44.     bool empty()
  45.     {
  46.         return head == 0;
  47.     }
  48.     int getlength()
  49.     {
  50.         return size;
  51.     }
  52.     T getx(T x)
  53.     {
  54.         element* r = findx(x);
  55.         T i = r->inf;
  56.         return i;
  57.     }
  58.     T get(int index)
  59.     {
  60.         element* r = find(index);
  61.         T i = r->inf;
  62.         return i;
  63.     }
  64.     void insert(int index, T data)
  65.     {
  66.         element* newptr = new element(data);
  67.         size = getlength() + 1;
  68.         if (index == 1)
  69.         {
  70.             newptr->next = head;
  71.             head = newptr;
  72.         }
  73.         else
  74.         {
  75.             element* prev = find(index - 1);
  76.             newptr->next = prev->next;
  77.             prev->next = newptr;
  78.         }
  79.     }
  80.     void remove(int index)
  81.     {
  82.         element* cur;
  83.         --size;
  84.         if (index == 1)
  85.         {
  86.             cur = head;
  87.             head = head->next;
  88.         }
  89.         else
  90.         {
  91.             element* prev = find(index - 1);
  92.             cur = prev->next;
  93.             prev->next = cur->next;
  94.         }
  95.         cur->next = nullptr;
  96.         delete cur;
  97.     }
  98.     void print()
  99.     {
  100.         for (element* cur = head; cur != nullptr; cur = cur->next)
  101.         {
  102.             cout << cur->inf << ' ';
  103.         }
  104.         cout << endl;
  105.     }
  106. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement