1:  #ifndef LINKED_LIST_H
2:  #define LINKED_LIST_H
3:  
4:  #include <stdlib.h>
5:  #include <stdio.h>
6:  
7:  #include "bool.h"
8:  
9:  #include "research.h"
10:  
11:  #ifndef TRUE
12:  #define TRUE 1
13:  #endif
14:  
15:  #ifndef FALSE
16:  #define FALSE 0
17:  #endif
18:  
19:  typedef struct
20:  {
21:    coord location; /*absolute pixel location for starting point*/
22:    int code;
23:  }chain;
24:  
25:  typedef chain el_t;
26:  
27:  typedef struct linked_list* node_pointer;
28:  typedef struct linked_list
29:  {
30:    node_pointer prev;
31:    el_t  data;
32:    node_pointer next;
33:  }list;
34:  
35:  typedef struct
36:  {
37:    list* head;
38:    list* tail;
39:    list* cur;
40:  }list_info;
41:  
42:  /*********prototypes**************************************************/
43:  
44:  
45:  void InitList(list_info* list_pointers);
46:  
47:  void FreeList(list_info* list_pointers);
48:  
49:  bool ListIsEmpty(list_info* list_pointers);
50:  
51:  int Length(list_info* list_pointers);
52:  
53:  bool ListIsFull();
54:  
55:  bool CurIsEmpty(list_info* list_pointers);
56:  
57:  struct linked_list* ToFirst(list_info* list_pointers);
58:  
59:  struct linked_list* ToEnd(list_info* list_pointers);
60:  
61:  bool AtFirst(list_info* list_pointers);
62:  
63:  bool AtEnd(list_info* list_pointers);
64:  
65:  void Advance(list_info* list_pointers);
66:  
67:  void Retreat(list_info* list_pointers);
68:  
69:  void InsertAfter(el_t e, list_info* list_pointers);
70:  
71:  void Insert(el_t e, list_info* list_pointers);
72:  
73:  void Delete(list_info* list_pointers);
74:  
75:  void StoreInfo(el_t e, list_info* list_pointers);
76:  
77:  el_t RetrieveInfo(list_info* list_pointers);
78:  
79:  el_t RetrievePrevInfo(list_info* list_pointers);
80:  
81:  list_info RetrievePrevNode(list_info* list_pointers);
82:  
83:  list_info RetrieveNextNode(list_info* list_pointers);
84:  
85:  el_t RetrieveNextInfo(list_info* list_pointers);
86:  
87:  node_pointer MakeNode(el_t e);
88:  
89:  void DestroyNode(node_pointer p);
90:  
91:  void NodeReferenceError();
92:  
93:  #endif