Тема: списки С++

Створити однозв’язний лінійний список з 4-х елементів цілого типу. Знайти суму передостаннього та останнього елемента масиву. Видалити перший елемент списку. Порахувати кількість парних елементів. Вивільнити динамічну пам’ять.

2 Востаннє редагувалося P.Y. (18.12.2014 20:21:47)

Re: списки С++

Якщо я правильно розумію, треба крокувати від чогось такого:

typedef struct node
    {
    struct node* next;
    int data;
    } NODE;

Це можна доповнити класом-обгорткою, що міститиме вказівник на перший NODE (або ж можна працювати безпосередньо з NODE*).
Виділення пам'яті для одного вузла списку:

NODE* p=new NODE();
p->next=NULL

Щоб прикріпити до нього ще три елементи, робимо так:

    NODE* q=p;
    int i;
    for (i=1; i<4; i++)
        {
        q->next=new NODE();//виділення пам'яті для наступного елемента
        q=q->next;//перехід до нього
        }
    q->next=NULL; //останній вузол замість вказівника на наступний містить NULL

Видалити перший елемент просто: переводимо вказівник p, що вказує на перший елемент, на наступний:

p=p->next

Але, оскільки нам треба ще й звільнити пам'ять, перед цим треба скопіювати цей вказівник, а після — звільнити його з допомогою delete:

NODE* tmp=p;
p=p->next;
delete tmp;

Для доступу до числа, що зберігається в вузлі списку, використовуйте ім'я_вказівника -> data

Подякували: 0xDADA11C71