trurlib
Paweł Gajda
mis w k2.net.pl
Śro, 26 Maj 1999, 14:06:41 CEST
On Tue, 25 May 1999, Wojtek Bojdol wrote:
>
>
> patch nr 2 dodaje jedna funkcje, ktora bedzie chyba przydatna (ps. lepiej
> int nth zastapic unsigned long nth bo bedzie bardziej uniwersalne i nie
> trzeba robic checku na <0 chyba, ze <0 uzywamy do list dwustronnych)
i jak się machniesz w programie i podasz indeks np. -4294967290, to
nie zostanie to wykryte.
>
> patch nr 3 to poczatek (nie skonczylem bo sie pozno robilo a wtedy wole
> nie pracowac) sortowanej listy...
Poczekam aż skończysz :-)
>
> dodatkowo pytanko....
> lista dwustronna jako opcja...przeciez wtedy bedzie inny element
> struktury...i jako opcji tego raczej sie nie da...
> mozna zawsze robic dwustronna...bo to w sumie duzej roznicy nie ma...
> ew. w strukturze dac pointer zawsze a przypisywac do niego tylko przy
> wybranej opcji
Myślałem o czymś takim:
struct list_node {
void *data;
struct list_node *next;
};
struct dlist_node {
void *data;
struct dlist_node *next;
struct dlist_node *prev;
};
struct list {
...
union {
struct list_node *l;
struct dlist_node *dl;
} head;
lub
void *head;
};
Do tego 2 zestawy funkcji:
dl_funkcja(struct list *head, ...)
l_funkcja(struct dlist *head, ...)
A w n_list_*():
if(l->flags & TN_LIST_DOUBLY_LINKED) {
dl_funkcja(l->head, ...)
} else {
l_funkcja(l->head, ...)
}
Jeżeli się za to bierzesz, to nie zmieniaj tego co jest, tylko
$ cp nlist.c nllist.c. Listy używam w paru miejscach.
> > Pierwszy, to coś nie tak z nlist push i pop. push chyba działa, ale z
> > popem miałem czasem sigsegv. Nie wiem czy to moja wina, czy nie, ale ten
> > sam kod tylko po zmianie na narray zaczal normalnie dzialac.
> e...prawdopodobnie przez to, ze l->head nie byl dobrze ustawiany przy
> zdejmowaniu last elementu..:)
dokładnie, dzięki :-)
Paweł
--
mailto: mis w k2.net.pl
Więcej informacji o liście dyskusyjnej pld-installer