Dynamic memory list



  • It's kind of clear in words, and it doesn't work. In this example, it is desirable to explain if:

    #include <iostream.h> 
    struct list 
    { 
     int data; 
     struct list *next; 
    }; 
    void main() 
    { 
     list *vsp; 
     // здесь нужно создать список, например из 5 элементов и задать значения 
     // информационным полям, потом вывести список на экран
    

    cout<<endl;



  • Another way (more universal):

    #include <iostream.h>
    #include <stdlib.h>
    

    struct st
    {
    char name[10];
    int age;
    struct st *next;
    };

    void main()
    {
    st * list = NULL; // Изначально пустой список
    st * temp; // Временная переменная

    // Добавление данных в список:
    while(1)
    {
        temp = (st*)malloc(sizeof(st));
        cout&lt;&lt;"enter data:"&lt;&lt;endl;
        cin&gt;&gt;temp-&gt;name&gt;&gt;temp-&gt;age;
        // Если введенный возраст &lt; 0 то выход из цикла
        if(temp-&gt;age&lt;0) { 
            free(temp); // освобождаем незадействованный элемент
            break;
        }
        // Добавляем новый элемент в _начало_ списка:
        temp-&gt;next = list;
        list = temp;
    }
    
    // Обход списка с выводом данных на экран:
    temp = list;
    while(temp!=NULL)
    {
        cout&lt;&lt;temp-&gt;name&lt;&lt;" "&lt;&lt;temp-&gt;age&lt;&lt;endl;
        temp = temp-&gt;next;
    }
    
    // ...
    
    // Освобождение списка:
    while(list!=NULL)
    {
        temp = list-&gt;next; // Запоминаем указатель на следующий элемент
        free(list); // Освобождаем первый элемент
        list = temp; // Убираем освобожденный первый элемент из списка
    }
    

    }


Log in to reply
 


Suggested Topics

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