顺序表的插入、删除、清空、销毁、定位、查找

#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;
}

猜你喜欢

转载自blog.csdn.net/ZCzhouchao1/article/details/81367333
今日推荐