Advertisement
Domerk

Из старого =)))

Oct 8th, 2011
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.07 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct elements;
  5.  
  6. struct elements {                     // структура элемента
  7.     int inf;
  8.     elements* pe;
  9. };
  10.  
  11. // вставка элемента, head - указатель на голову, place - позиция вставки, value - число, которое нужно вставить
  12. elements* insert(elements*& head, int place, int value)
  13. {
  14.     if(head)                           // если первый элемент уже создан (голова отлична от нуля)
  15.     {                                  // pp - указатель на элемент, после которого вставляем, pc - перед которым, pt - вставляемый элемент
  16.         elements *pp = head, *pc = head, *pt = 0;
  17.         for(int i = 0; i < place; ++i) // пока не нашли позицию
  18.             if(pc)                     // если текущий элемент есть
  19.             {
  20.                 pp = pc;               // текущий -> предыдущий
  21.                 pc = (*pc).pe;         // следующий -> текущий
  22.             }
  23.             else return 0;             // иначе вставить не удалось
  24.         pt = new elements;             // создаем новый элемент
  25.         (*pt).inf = value;             // с нужной инфой
  26.         if(place == 0) head = pt;      // если вставляем после головы, указываем ей на новый элемент
  27.         else (*pp).pe = pt;            // иначе - указываем предыдущим на него
  28.         (*pt).pe = pc;                 // указываем вставленным элементом на следущий
  29.         return pt;                     // ура
  30.     }
  31.     else head = new elements;          // ни одного элемента нет! создаем первый, указываем на него головой
  32.     (*head).inf = value;               // заполняем инфу
  33.     (*head).pe = 0;                    // следующего нет.
  34. }
  35.  
  36. // печать списка
  37. void print(elements* h)
  38. {
  39.     while(h)                           // пока элемент существует
  40.     {
  41.         cout << (*h).inf << " ";       // вывести его инфу
  42.         h = (*h).pe;                   // перейти к следующему
  43.     }
  44. }
  45.  
  46. // удаление списка
  47. void erase(elements* h)
  48. {
  49.     elements* th;                      // вспомогательный указатель
  50.     while(h)                           // пока есть текущий элемент
  51.     {
  52.         th = (*h).pe;                  // запоминаем следующий элемент
  53.         delete h;                      // удаляем текущий
  54.         h = th;                        // переходим к следующему
  55.     }
  56. }
  57.  
  58. int main()
  59. {
  60.     elements* head = 0;
  61.     insert(head, 0, 100);
  62.     insert(head, 1, 300);
  63.     insert(head, 1, 200);
  64.     insert(head, 3, 400);
  65.     insert(head, 4, 500);
  66.     insert(head, 5, 600);
  67.     print(head);
  68.     erase(head);
  69.     std::cin.sync();
  70.     std::cin.clear();
  71.     std::cin.get();
  72.     return 0;
  73. }
  74.  
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement