#include "sequencelist.h"
#include <stdlib.h>
#include <stdio.h>
int Sequence_list(Selist *p)
{
if(p == NULL)
{
return FALSE;
}
else
{
p->length = 0;
p->list = (TYPE *) malloc (sizeof(TYPE)*SIZE);
if(p->list == NULL)
{
printf("FALSE!\n");
}
return SUCESS;
}
}
int Sequence_insert(Selist *p,TYPE n,TYPE e)
{
TYPE i;
if(n < 1|| n > p->length + 1|| p == NULL || p->length >= SIZE)
{
return FALSE;
}
for(i = 0;i < p->length - n + 1; i++)
{
p->list[p->length - i] = p->list[p->length - i - 1];
}
p->length++;
p->list[n-1] = e;
return SUCESS;
}
int Sequence_length(Selist l)
{
return l.length;
}
int Sequence_empty(Selist l)
{
return l.length == 0 ? T : F;
}
int Sequence_search(Selist l,TYPE n,TYPE *e)
{
if(n < 1|| n > l.length)
{
return FALSE;
}
*e = l.list[n-1];
return SUCESS;
}
int Sequence_cat(Selist l,void (*p)(TYPE))
{
TYPE i;
if(l.length == 0||l.list == NULL)
{
return FALSE;
}
for(i = 0; i < l.length; i++)
{
p(l.list[i]);
}
}
int Sequence_location(Selist l,TYPE f,void(*p)(TYPE))
{
TYPE i,count = 0;
if(l.length == 0)
{
return FALSE;
}
printf("equal = 5 location:\n");
for(i = 0; i < l.length; i++)
{
if(f == l.list[i])
{
p(i+1);
++count;
}
}
if(!count)
{
return FALSE;
}
}
int Sequence_delete(Selist *l,TYPE n,TYPE *f)
{
TYPE i;
if(l == NULL || n < 1 || n > l->length)
{
return FALSE;
}
*f = l->list[n - 1];
for(i = 0;i < l->length - n;i++)
{
l->list[n + i - 1] = l->list[n + i];
}
l->length--;
return SUCESS;
}
int Sequence_clear(Selist *l)
{
if(l == NULL)
{
return FALSE;
}
l->length = 0;
return SUCESS;
}
int Sequence_destroy(Selist *l)
{
if(l == NULL)
{
return FALSE;
}
l->length = 0;
free(l->list);
l->list = NULL;
return SUCESS;
}