/*
* This module is for storing strings in a doubly-linked list
* The strings can be alphabetized using a mergesort algorithm
*/
/* List nodes */
struct node_t {
struct node_t *next;
struct node_t *prev;
char *string;
};
/*
* Frees an entire list of node_t's
* list is a pointer to any node in the list.
*/
void free_list(struct node_t *list);
/*
* Returns the number of nodes in the node_t list
* list is a pointer to any node in the list.
*/
int get_count(struct node_t *list);
/*
* list is a pointer to any node in the list.
* Returns the head of the node_t list.
* Returns NULL if list is NULL.
*/
struct node_t *get_head(struct node_t *list);
/*
* list is a pointer to any node in the list.
* Returns the tail of the node_t list.
* Returns NULL if list is NULL.
*/
struct node_t *get_tail(struct node_t *list);
/*
* Returns a node_t list of the files and directories in directory dir_path
* Ignores files or directories beginning with '.'
* Returns the head of the list upon success, NULL upon failure
*/
struct node_t *get_dir_list(char *dir_path);
/*
* Adds a new node to the end of the node_t list list.
* list is a pointer to any node in the list.
* If list is NULL, a new node is created.
* Places str in the new node.
* Returns a pointer to the tail upon success, NULL upon failure.
* If you create a list, it is your responsibility to free it with free_list()
*/
struct node_t *append_string(struct node_t *list, char *str);
/*
* Alphabetizes a list of node_t's according to ascii
* head must be the head of the list
* Returns a pointer to the head of the alphabetized list
* You must free the list after you are finished
* with it with free_list()
*/
struct node_t *alpha_mergesort(struct node_t *head);
/*
* Merges and alphabetizes (according to ascii) 2 node_t lists.
* Typically only called by alpha_mergesort()
*/
struct node_t *alpha_merge(struct node_t *head1, struct node_t *head2);
/*
* Divides a node_t list in half, returning a
* pointer to the second half.
* head must be the head of the list
*/
struct node_t *divide_list(struct node_t *head);
syntax highlighted by Code2HTML, v. 0.9.1