Once the INSERT function is performed, the same list shall be issued as before it is performed. What's the problem?



  • #include <iostream>
    #include <string>
    #include <iomanip>
    using namespace std;
    
    const int maxlen = 100;
    
    struct LIST
    {
        int elem[maxlen];
        int last;  //индекс последнего элемента списка
    };
    // Вставка
    bool INSERT(int x, int p, LIST L)
    {
        if (p > L.last + 2 || p < 1)
            return false;
        else if (p < L.last + 2)//вставка не в конец списка
        {
            for (int i = L.last; i >= p - 1; i--)
                /*перемещаем на одну позицию вниз, начиная с последнего*/
                L.elem[i + 1] = L.elem[i];
        }
        L.last++;
        L.elem[p - 1] = x;
        cout << L.last << endl;
        return true;
    };
    
    int main()
    {
        system("chcp 1251");
        LIST cpisok;
        //Начальный список
        cpisok.elem[0] = 5;
        cpisok.elem[1] = 0;
        cpisok.elem[2] = 9;
        cpisok.last = 2;
        cout << setw(18) << "Номер элемента" << setw(18) << "Значение элемента" << endl;
        for (int i = 0; i <= cpisok.last; i++) {
            cout << setw(18) << i+1 << setw(18) << cpisok.elem[i] << endl;
        }
    
        cout << endl << "Что вы хотите сделать?" << endl << "1) Ввести новый элемента списка";
        cout << endl << "2) Удалить элемент списка" << endl << "3) Найти элемент списка" << endl;
        cout << "Введите цифру: ";
    
        int n;
        cin >> n;
        if (n == 1) {
            int x, p;
            cout << endl << "Введите элемент: ";
            cin >> x;
            cout << endl << "Введите позицию, в которую хотите вставить этот элемент: ";
            cin >> p;
            INSERT(x, p, cpisok);
            cout << cpisok.last;
            cout << endl << setw(18) << "Номер элемента" << setw(18) << "Значение элемента" << endl;
            for (int i = 0; i <= cpisok.last; i++) {
                cout << setw(18) << i + 1 << setw(18) << cpisok.elem[i] << endl;
            }
        }
    }
    


  • You're in a role.

    bool INSERT(int x, int p, LIST L)
    

    There's a copy of the list, so after the call.

    INSERT(x, p, cpisok);
    

    yours cpisok You changed the copy.

    Pass it. LIST I don't know.


Log in to reply
 


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2