.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH insque 3 "17 mai 2025" "Pagini de manual de Linux 6.15" .SH NUME insque, remque \- inserează/elimină un element dintr\-o coadă .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBvoid insque(void *\fP\fIelem\fP\fB, void *\fP\fIprev\fP\fB);\fP \fBvoid remque(void *\fP\fIelem\fP\fB);\fP .fi .P .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .P \fBinsque\fP(), \fBremque\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE .fi .SH DESCRIERE Funcțiile \fBinsque\fP() și \fBremque\fP() manipulează liste dublu legate. Fiecare element din listă este o structură ale cărei prime două elemente sunt un indicator înainte și un indicator înapoi. Lista legată poate fi liniară (adică, indicator înainte NULL la sfârșitul listei și indicator înapoi NULL la începutul listei) sau circulară. .P Funcția \fBinsque\fP() inserează elementul indicat de \fIelem\fP imediat după elementul indicat de \fIprev\fP. .P Dacă lista este liniară, atunci apelul \fIinsque(elem, NULL)\fP poate fi utilizat pentru a introduce elementul inițial al listei, iar apelul stabilește indicatorii înainte și înapoi ai lui \fIelem\fP la NULL. .P Dacă lista este circulară, apelantul trebuie să se asigure că indicatorii înainte și înapoi ai primului element sunt inițializați pentru a indica elementul respectiv, iar argumentul \fIprev\fP al apelului \fBinsque\fP() trebuie să indice și el elementul. .P Funcția \fBremque\fP() elimină elementul indicat de \fIelem\fP din lista dublu legată. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBinsque\fP(), \fBremque\fP() T} Siguranța firelor MT\-Safe .TE .SH VERSIUNI .\" e.g., SunOS, Linux libc4 and libc5 În sistemele vechi, argumentele acestor funcții erau de tipul \fIstruct\ qelem\ *\fP, definite astfel: .P .in +4n .EX struct qelem { struct qelem *q_forw; struct qelem *q_back; char q_data[1]; }; .EE .in .P Aceasta este ceea ce veți obține dacă \fB_GNU_SOURCE\fP este definit înainte de a include \fI\fP. .P .\" Linux libc4 and libc 5 placed them in .\" .IR . Locația prototipurilor pentru aceste funcții diferă între mai multe versiuni ale UNIX. Cea de mai sus este versiunea POSIX. Unele sisteme le plasează în \fI\fP. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001. .SH ERORI În glibc 2.4 și anterior, nu era posibil să se specifice \fIprev\fP ca NULL. În consecință, pentru a construi o listă liniară, apelantul trebuia să construiască o listă utilizând un apel inițial care conținea primele două elemente ale listei, cu indicatorii înainte și înapoi din fiecare element inițializați corespunzător. .SH EXEMPLE Programul de mai jos demonstrează utilizarea lui \fBinsque\fP(). Iată un exemplu de execuție a programului: .P .in +4n .EX $ \fB./a.out \-c a b c\fP Parcurgerea listei completate: a b c Aceasta a fost o listă circulară .EE .in .SS "Sursa programului" .\" SRC BEGIN (insque.c) \& .EX #include #include #include #include \& struct element { struct element *forward; struct element *backward; char *name; }; \& static struct element * new_element(void) { struct element *e; \& e = malloc(sizeof(*e)); if (e == NULL) { fprintf(stderr, "malloc() failed\[rs]n"); exit(EXIT_FAILURE); } \& return e; } \& int main(int argc, char *argv[]) { struct element *first, *elem, *prev; int circular, opt, errfnd; \& /* Opțiunea de linie de comandă „\-c” poate fi utilizată pentru a specifica faptul că lista este circulară.. */ \& errfnd = 0; circular = 0; while ((opt = getopt(argc, argv, "c")) != \-1) { switch (opt) { case \[aq]c\[aq]: circular = 1; break; default: errfnd = 1; break; } } \& if (errfnd || optind >= argc) { fprintf(stderr, "Utilizare: %s [\-c] șir...\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& /* Creați primul element și plasați\-l în lista legată. */ \& elem = new_element(); first = elem; \& elem\->name = argv[optind]; \& if (circular) { elem\->forward = elem; elem\->backward = elem; insque(elem, elem); } else { insque(elem, NULL); } \& /* Adaugă argumentele de linie de comandă rămase ca elemente de listă. */ \& while (++optind < argc) { prev = elem; \& elem = new_element(); elem\->name = argv[optind]; insque(elem, prev); } \& /* Parcurge lista de la început, imprimând numele elementelor. */ \& printf("Parcurgerea listei completate::\[rs]n"); elem = first; do { printf(" %s\[rs]n", elem\->name); elem = elem\->forward; } while (elem != NULL && elem != first); \& if (elem == first) printf("Aceasta a fost o listă circulară\[rs]n"); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBqueue\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .