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