A handy collection of C algorithms compiled into one header file for use anywhere.
Go to file
Andrew Lalis 167b450ce3 added an is_empty function to the stack. 2017-05-23 11:21:38 +02:00
source added an is_empty function to the stack. 2017-05-23 11:21:38 +02:00
.gitignore Added a tester file and used pointers for stacks. 2017-05-22 15:26:21 +02:00
README.md added an is_empty function to the stack. 2017-05-23 11:21:38 +02:00
test.c Added true generic typing for stacks. 2017-05-23 10:45:31 +02:00

README.md

Algorithms

A handy collection of C algorithms compiled into one header file for use anywhere. Feel free to include this file with any C project, as long as you keep the comment at the top with a little copyright notice.

Table of Contents

  1. Stacks
  2. Queues
  3. Linked Lists
  4. Heap(Priority Queue)

Stack

Functions

//Creates new stack.
void new();
//Frees stack memory.
void free(Stack *s);
//Pushes item to top of the stack.
void push(item, Stack *s);
//Removes item on top of the stack and returns it.
item pop(Stack *s);
//Prints stack size, memory usage.
void print(Stack s);
//Returns 1 if empty stack, 0 otherwise.
int is_empty(Stack s);

Description

The stack is probably the most basic storage structure, using the 'first-in, first-out' approach. To define a stack, the user must first know what type the stack is, either a primitive type, or a struct. To define a stack, you must first define the STACK_TYPE to int, float, char, or whatever type you wish. Then, include the handystack header file.

#define STACK_TYPE int 
#include "handystack.h" 

To define more than one stack, STACK_TYPE must first be undefined. #undef STACK_TYPE Then you simply define the type, and include the header again. Do not try to define two of the same type, however, as that will give all sorts of nasty errors.

Example

The following example creates a stack of doubles, pushes 45.000 onto it, and prints the stack's characteristics.

#define STACK_TYPE double
#include "handystack.h"
double_stack myStack = new_double_stack();
push_double_stack(45.000, &myStack);
print_double_stack(myStack);

Notice that the function names are characteristic of the STACK_TYPE you've defined earlier? The functions have the following basic format: FUNCTION_ + STACK_TYPE + _stack Where FUNCTION is the name of the function.

Back to Top

Queue

Back to Top

Linked List

Back to Top

Heap (Priority Queue)

Back to Top