This preview shows page 1. Sign up to view the full content.
Unformatted text preview: the safety provided by the C type system. One application is when we know in advance that the use of two different ﬁelds in a data structure will be mutually exclusive. Then declaring these two ﬁelds as part of a union rather than a structure will reduce the total space allocated. For example, suppose we want to implement a binary tree data structure where each leaf node has a double data value, while each internal node has pointers to two children, but no data. If we declare this as:
struct NODE { struct NODE *left; struct NODE *right; double data; }; then every node requires 16 bytes, with half the bytes wasted for each type of node. On the other hand, if we declare a node as:
union NODE { struct { union NODE *left; union NODE *right; } internal; double data; }; then every node will require just 8 bytes. If n is a pointer to a node of type union NODE *, we would reference the data of a leaf node as n>data, and the children of an internal node as n>internal.left and n>internal.right. With this encoding, however, there is no way to determine whether a given node is a leaf or an internal node. A common method is to...
View
Full
Document
This note was uploaded on 09/02/2010 for the course ELECTRICAL 360 taught by Professor Schultz during the Spring '10 term at BYU.
 Spring '10
 Schultz
 The American

Click to edit the document details