fig20_03.pl

来自「PERL语言资料 可以用于PERL程序设计」· PL 代码 · 共 87 行

PL
87
字号
#!/usr/bin/perl
# Figure 20.3: fig20_03.pl
# A simple demonstration of linked lists.

use warnings;
use strict;

my $linkedList = undef;  # defines head reference

traverseList( $linkedList );  # output current list contents

# add an element to $linkedList
$linkedList = { data => "haircut", nextLink => $linkedList };

# add more elements to $linkedList
$linkedList = { data => "batteries", nextLink => $linkedList };
$linkedList = { data => "groceries", nextLink => $linkedList };
$linkedList = { data => "cleaning", nextLink => $linkedList };

print( "\nAfter adding four elements to the list, ",
       "the list contains:\n" );
traverseList( $linkedList );  # output current list contents

# swap first two elements
my ( $first, $second ) = ( $linkedList, $linkedList->{ nextLink } );
$first->{ nextLink } = $second->{ nextLink };
$second->{ nextLink } = $first;

# aim head reference at new first element
$linkedList = $second;

print( "\nAfter swapping the first two elements, ",
       "the list contains:\n" );
traverseList( $linkedList );  # output current list contents

# delete third element
$second = $linkedList->{ nextLink };

my $third = $linkedList->{ nextLink }->{ nextLink };
$second->{ nextLink } = $third->{ nextLink };
$third = undef;

print( "\nAfter deleting the third element, ", 
       "the list contains:\n" );
traverseList( $linkedList );  # output current list contents

# Function to output the contents of the linked list it 
# receives as an argument.
sub traverseList 
{
   my $current = shift();

   if ( !defined( $current ) ) {
      print( "The list is empty.\n" );
      return;
   }

   while ( defined( $current ) ) {  
      print( "$current->{ data }" );      # print current data
      $current = $current->{ nextLink };  # move to next node

      if ( defined( $current ) ) {        # if next node exists,
         print( " --> " );                # output -->

      }
   }

   print( "\n" );
}


###########################################################################
#  (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall.     #
#  All Rights Reserved.                                                   #
#                                                                         #
#  DISCLAIMER: The authors and publisher of this book have used their     #
#  best efforts in preparing the book. These efforts include the          #
#  development, research, and testing of the theories and programs        #
#  to determine their effectiveness. The authors and publisher make       #
#  no warranty of any kind, expressed or implied, with regard to these    #
#  programs or to the documentation contained in these books. The authors #
#  and publisher shall not be liable in any event for incidental or       #
#  consequential damages in connection with, or arising out of, the       #
#  furnishing, performance, or use of these programs.                     #
###########################################################################

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?