Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Data Structures and Boolean Logic
Index -> General Programming
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
wtd




PostPosted: Wed Dec 20, 2006 3:43 am   Post subject: Data Structures and Boolean Logic

Pointers and Data Structures: The Real Story

In Data Structures classes that use C, C++, and Java, it is not at all uncommon to use pointers. Yes, even in Java, pointers are used. You just don't see that reflected in the syntax.

The real question, though, is why pointers are used.

Pointers permit one very important thing in these languages. They permit boolean logic with any given type. Normally we think of boolean logic as being limited to "true" and "false," but really it applies to any "one or the other" situation.

With pointers, a variable is either a valid pointer to some piece of data, or it's null.

Consider a simple linked list. A null pointer would symbolize an empty list. Anything else is a non-empty list.

Variant Types

Pointers can be avoided if boolean logic can be symbolized in some other way. Variant types permit just such a thing.

Consider an O'Caml linked list.

code:
type linked_list = Empty | Node of int * linked_list


Dynamic Typing

In yet other languages, static-typing is not required, and we can achieve this same logic by assigning a different type of value to the same "next" variable we would have created in the earlier languages.

For instance, in Ruby, rather than having next be another object representing a node, we might assign to it the nil object.

The Point

Using pointers, or using variant types, or dynamic typing, the logic remains the same. It is important to see past the particular implementation strategy and grasp this fundamental truth when learning about data structures.
Sponsor
Sponsor
Sponsor
sponsor
Null




PostPosted: Wed Dec 20, 2006 9:36 am   Post subject: (No subject)

I think that code should actually read:

code:

type linked_list = Null | Node of int * linked_list;;


but I'm not positive.

Smile
wtd




PostPosted: Wed Dec 20, 2006 11:18 am   Post subject: (No subject)

Yes, yes it should. Though I didn't include the double semi-colon.
Display posts from previous:   
   Index -> General Programming
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 3 Posts ]
Jump to:   


Style:  
Search: