Listă cu o singură legătură, ștergerea elementelor, c - depășirea stivei în limba rusă

Bună ziua. Aici există un astfel de cod de eliminare a unui element din listă

Începutul este elaborat bine, i. E. Primul element pe care îl elimină, dar din anumite motive celelalte elemente nu funcționează. Cred că aceasta este a doua zi, capul meu fierbe. Îmi imaginez algoritmul ca acesta:







  1. Ștergeți elementul
  2. Treceți restul elementelor din listă (stânga pentru a șterge sau dreapta?)

sau, în general, faceți acest lucru 1. Ștergeți elementul

  1. Trecem întreaga listă până ajungem la o distanță (NULL)
  2. Vom muta link-ul de la element înaintea telecomenzii la element după telecomandă (ocolind chiar elementul șters)
  3. Repetați pasul 3 până când nu există elemente zero. Considerând că nu luăm în considerare sfârșitul listei.

Multe mulțumiri tuturor pentru ajutor! Am descoperit multe lucruri noi pentru mine în lucrul cu indicii. Mulțumiri speciale pentru







@MichaelPak pentru indicarea direcției în care merită săpat și indicând eroarea specifică și explicația detaliată,

@ Mike pentru încărcarea pentru utilizarea unui algoritm irațional

@alexolut pentru a determina diferența dintre ned delete și malloc free

@Vlad de la Moscova pentru o soluție detaliată a problemei și o idee grozavă despre utilizarea unei variabile de tip nesemnate (și a făcut în cele din urmă).

Sunt foarte recunoscător pentru dvs., vă mulțumesc foarte mult!

Listele sunt mai rele decât matricele prin faptul că nu puteți accesa elementul în liste simultan: trebuie să treceți prin elementele anterioare pentru a face acest lucru. Prin urmare, procesul de ștergere este după cum urmează:

Deci, din această imagine:

Aveți aceeași problemă pe care o ștergeți mai întâi pentru element și apoi încercați să găsiți linkul la următoarea, adică ajutând -> Următorul -> Următorul după ștergere nu mai indică elementul 3. Încercați mai întâi să lucrați cu pointeri și apoi ștergeți elementul.

Răspunsul este dat 18 noiembrie '15 la ora 5:46

Excelente ilustrații) - Kromster pe 18 noiembrie '15 la 5:58

2 O dată ce rulează lanțul este un bust. Mai bine, mișcându-se de-a lungul lanțului, amintiți-vă elementul anterior.

Răspunsul este dat 18 noiembrie '15 la ora 6:40







Articole similare

Trimiteți-le prietenilor: