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