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