xotohop

кт1

May 8th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. struct node
  4. {
  5.     int info;
  6.     node *next;
  7. };
  8. typedef node *NodeP;// указатель на тип node
  9. NodeP head = NULL;  // указатель на начало списка   
  10. NodeP p;            // указатель на текущий элемент
  11. NodeP tail;
  12. int number;
  13. node * create(NodeP)
  14. {
  15.     int let = 1;
  16.     int i, num;
  17.     tail = head;    // указатель на конец списка
  18.     while (let)
  19.     {
  20.         printf("enter element: ");
  21.         scanf("%d", &number);
  22.         p = (node*)malloc(sizeof(node));
  23.         if (head == NULL)   // если список пуст
  24.         {
  25.             head = p;// выделение памяти для нового элемента
  26.             head->info = number;    // запись значения в список
  27.             head->next = NULL;
  28.             tail = head;
  29.         }
  30.         else
  31.         {
  32.             p->info = number;
  33.             tail->next = p;
  34.             p->next = NULL;
  35.             tail = p;
  36.             printf("continue (1/0)? ");
  37.             scanf("%d", &let);
  38.         }
  39.     }
  40.     return tail;
  41. }
  42. node * insert(NodeP, int insert_elem, int idx)
  43. {
  44.     int num, i;
  45.     tail = head;
  46.     num = idx;
  47.     for (i = 0; i < num; i++)
  48.     {
  49.         tail = tail->next;
  50.         if (tail == NULL)
  51.         {
  52.             cout << "idx doesnt exist" << endl;
  53.             break;
  54.         }
  55.     }
  56.     if (i == num)
  57.     {
  58.         number = insert_elem;
  59.         p = (node*)malloc(sizeof(node));
  60.         p->next = tail->next;
  61.         tail->next = p;     // tail в данном случае элемент, после которого вставка
  62.         p->info = number;
  63.     }
  64.     return p;
  65. }
  66. int search(NodeP, int insert_elem)
  67. {
  68.     int idx = -1;
  69.     p = head;
  70.     while (p != NULL && p->info > insert_elem)
  71.     {
  72.         idx++;
  73.         p = p->next;
  74.     }
  75.     return idx;
  76. }
  77. void print(NodeP)
  78. {
  79.     p = head;
  80.     while (p != NULL)
  81.     {
  82.         cout << p->info << ' ';
  83.         p = p->next;
  84.     }
  85.     cout << endl;
  86.     return;
  87. }
  88.  
  89. int main()
  90. {
  91.     int idx, elem;
  92.     create(p);
  93.     print(p);
  94.     cout << "enter insert elem: ";
  95.     cin >> elem;
  96.     idx = search(p, elem);
  97.     insert(p, elem, idx);
  98.     print(p);
  99.     return 0;
  100. }
Add Comment
Please, Sign In to add comment