background image

 

 

LISTY

background image

 

 

LISTY  :

  

jednokierunkowe

  

dwukierunkowe

   

cykliczne

nil

 

2

16

  

9

 nil

headL

nil

 

2

16

  

9

headL

 

2

16

 

 9

background image

 

 

type 

    wsk  =  ^ element ;                                    

    element = record  

                       prev : wsk;                                

                       key : integer;               

                        next : wsk

                   end ;                               

var  

   headL  : wsk ;

pre
v

nex
t

 

ke
y

headL

background image

 

 

procedure LIST_INSERT1 (var k : Integer ;  var  headL : wsk);

{ Dołącza element o kluczu k na początek listy  
dwukierunkowej }

  var  pom : wsk;
  begin
       New (pom);

       pom^.key := k;
       pom^.prev := nil;
       pom^.next. := headL;

       if  headL <> nil   then    headL^.prev := pom ;
       headL := pom
  end;

background image

 

 

procedure LIST_INSERT2 (var k : Integer ; var za: wsk; var  
headL : wsk);

{Dołącza element o kluczu k  za   element „za”   listy  
dwukierunkowej}

  var  przed,  pom : wsk;

  begin
    
New (pom);
    przed := za^.next ; 

    if  przed <> nil   then
 
       begin 
   
          pom^.key := k;
          pom^.prev := za;
          pom^.next. := przed;
          przed^.prev := pom;
          za^.next := pom
      end
   

else 

      begin
          
pom^.key := 
k;
          pom^.prev := 
za;
          pom^.next := 
nil;
         za^.next := 
pom
 end;  

end;

background image

 

 

procedure LIST_SEARCH1 (var k : Integer ; var  headL : wsk; var 
jest: wsk);

        { Znajduje na liście element o kluczu k }

  var  pom : wsk ;
  begin
    
 jest := nil;
     pom := headL;   
     while  ( pom <> nil )  do
         begin
             if  (pom^.key <> k)   then    pom := pom^.next
               else    
                 begin
                     jest := pom;
                     pom := nil;
                 end
         end
  end;

background image

 

 

procedure LIST_SEARCH2 (var k : Integer ; var  headL : wsk; var 
jest: wsk);

       { Znajduje na liście element o kluczu k }

  var  pom : wsk ;
  begin
     pom := headL;   
     while  (( pom <> nil )   and    ( pom^.key <> k )) do
            pom := pom^.next ;

     jest := pom;

end;

background image

 

 

procedure LIST_DELETE1 (var  headL : wsk);
   

{Usuwa pierwszy element  z listy}

 var  pom : wsk;
 begin
   if  
headL <> nil  then 
      begin
         headL := headL^.next;     
         if   headL <> nil    then    headL^.prev := nil
      end
end;

        

background image

 

 

Procedure LIST_DELETE 2 (var el: wsk;  var  headL : wsk);
 

{Usuwa element o wskazniku el z listy}

 var  pom : wsk;
 begin
    if  el^.prev <> nil
       then    begin
                     pom := el^.prev;
                     pom^.next := el^.next
                  end

       else     headL := el^.next;     
    if   el^.next <> nil 
       then   begin
                    pom := el^.next;
                    pom^.prev := el^.prev
                 end;

        


Document Outline