#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "c_calls.h"
void insert_cell(LIST *list, const char *name)
/*
Insert a new cell in the list with the specified name and return a
pointer to the head of the list. The new cell is inserted in
alphabetical order.
*/
{
LIST new_cell;
if ((*list == NULL) || (namecmp(name, (*list)->name) < 0))
{
if ((new_cell = malloc(sizeof(CELL))) == NULL)
error("out of memory");
new_cell->calls = new_cell->called_from = NULL;
strcpy(new_cell->name, name);
if (*list == NULL)
new_cell->next = NULL;
else
new_cell->next = *list;
*list = new_cell;
}
else
if (stricmp(name, (*list)->name) != O)
insert_cell((&(*list)->next), name);
}
void delete_cell (LIST *list, const char *name)
/* Delete the cell with the specified name from the list. */
{
LIST ptr;
/* If cell to be deleted is at head of list... */
if ((*list != NULL) && (stricmp{name, (*list)->name) == 0))
{
/* Delete the cell. */
ptr = *list;
*list = (*list)->next;
free(ptr);
}
else
/* Try to delete the cell from the rest of the list. */
if (*list != NULL)
delete_cell(&(*list)->next, name);
}
LIST find_cell(LIST list, const char *name)
/*
Return a pointer to the cell containing the specified name
if it is found in the list. Otherwise return NULL.
*/
{
for (; list != NULL; list = list->next)
if (stricmp(name, list->name) == 0)
return list;
return NULL;
}
/* End of File */