数据结构 顺序列表实现纯代码

顺序列表操作接口函数声明

void sequence_list_init(sequence_list_t *sl);
void append(sequence_list_t *sl,int dat);
void display(sequence_list_t *sl);
int size_list(sequence_list_t *sl);
int find_list(sequence_list_t *sl,int find_dat);
int get(sequence_list_t *sl,int index);
int insert(sequence_list_t *sl,int pos,int dat);
int delet(sequence_list_t *sl,int pos);

顺序列表数据结构个体定义

#define MAX_SIZE 	100

typedef struct sequence_list
{
	int data[MAX_SIZE];
	int size;
}sequence_list_t;

完整代码

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 	100

typedef struct sequence_list
{
	int data[MAX_SIZE];
	int size;
}sequence_list_t;


void sequence_list_init(sequence_list_t *sl)
{
	sl->size = 0;	
	memset(sl->data,0,MAX_SIZE);
}

void append(sequence_list_t *sl,int dat)
{
	if(sl->size < MAX_SIZE)
	{
		sl->data[sl->size] = dat;
		sl->size++;
	}
	else
	{
		printf("list is full append fail\n");
	}
}
void display(sequence_list_t *sl)
{
	int i = 0;
	for(i = 0; i < sl->size;i++)
	{
		printf("%d:[%d]\n",i,sl->data[i]);
	}
}

int size_list(sequence_list_t *sl)
{
	return sl->size;
}

int find_list(sequence_list_t *sl,int find_dat)
{
	int i = 0;
	for(i = 0;i < sl->size;i++)
	{
		if(find_dat == sl->data[i])
		return i;
	}
	if(i > sl->size)
	{
		return -1;
	}
}
int get(sequence_list_t *sl,int index)
{
	return sl->data[index];
}

int insert(sequence_list_t *sl,int pos,int dat)
{
	int i = 0;
	if(pos > MAX_SIZE)
	{
		return -1;
	}
	if(pos == sl->size)
	{
		sl->data[pos] = dat;
		sl->size++;
		return 1;
	}
	for(i = sl->size;i >= pos;i--)
	{
		sl->data[i+1] = sl->data[i];
	}
	sl->data[pos] = dat;
	sl->size++;
	
	return 1;
}
int delet(sequence_list_t *sl,int pos)
{
	int i = 0;
	if(pos > sl->size)
	{
		return -1;
	}
	else
	{
		for(i = (pos + 1);i <= sl->size;i++)
		{
			sl->data[i-1] = sl->data[i];
		}
		sl->size--;
	}
}

int main()
{
	sequence_list_t sq_list;
	sequence_list_init(&sq_list);
	append(&sq_list,1);
	append(&sq_list,2);
	append(&sq_list,3);
	append(&sq_list,5);
	append(&sq_list,7);
	append(&sq_list,9);
	display(&sq_list);
	printf("list curent size : %d\n",size_list(&sq_list));
	printf("find_list(),9 index : %d\n",find_list(&sq_list,9));
	printf("get() tail item %d\n",get(&sq_list,sq_list.size-1));
	insert(&sq_list,3,33);
	printf("aftert inser 3,33\n");
	display(&sq_list);
	delet(&sq_list,3);
	
	printf("after delet 3\n");
	display(&sq_list);
	printf("list curent size : %d\n",size_list(&sq_list));
	return 0;
}

运行测试结果

猜你喜欢

转载自blog.csdn.net/qq_29796781/article/details/81666494