00001 00002 // Copyright (C) 2003 Dmitry Bormotov 00003 00004 // Contents: Definition of class DDL 00005 // 00006 // Principal Authors: Dmitry Bormotov 00007 // 00008 // Status: provisional 00009 // 00010 // Description: Provisional implementation of double linked list 00011 // 00012 // Revision History: 00013 // 00014 00015 #ifndef DDL_h_ 00016 #define DDL_h_ 00017 00018 #include "Word.h" 00019 00020 00021 // ------------------------ DDL -------------------------- // 00022 00023 00024 struct DDLNode { 00025 00026 DDLNode( int v ) : value(v), left(0), right(0) { } 00027 00028 int value; 00029 DDLNode* left; 00030 DDLNode* right; 00031 }; 00032 00033 00034 struct DDL { 00035 00037 // // 00038 // Constructors // 00039 // // 00041 00042 DDL( ) : first(0), last(0), len(0) { } 00043 00044 DDL( Word w, bool bFreelyReduce = true ); 00045 00046 ~DDL( ); 00047 00048 00050 // // 00051 // Public functions // 00052 // // 00054 00055 void append( int v ); 00056 00057 void delend( ); 00058 00059 Word toWord( ); 00060 00061 void delcur( DDLNode* p ); 00062 00063 void insertA( DDLNode* p, int v ); 00064 00065 void insertA( DDLNode* p, Word w ); 00066 00067 00069 // // 00070 // Data Members // 00071 // // 00073 00074 DDLNode* first; 00075 DDLNode* last; 00076 int len; 00077 }; 00078 00079 #endif