C语言-数据结构(1)

C语言实现数据结构-顺序表

#include<stdio.h>
#include<stdlib.h>
#include"sqlist.h"
/* 两种自定义的数据类型
typedef int datatype;
typedef struct node_st
{
	datatype data[DATASIZE];
	int last;	
}sqlist;
*/
//创建一个顺序表的两种方法
sqlist * sqlist_create()
{
	sqlist *me;
	me = malloc(sizeof(*me));
	if(me == NULL)
		return NULL;
	me->last = -1;
	return me;
}
void sqlist_create1(sqlist **ptr)
{
	*ptr = malloc(sizeof(**ptr));
	if(*ptr == NULL)
		return;
	(*ptr)->last = -1;
	return;
}
//实现顺序表固定位置上的插入
int sqlist_isert(sqlist *me ,int i,datatype *data)
{
	int j;
	if(me->last == DATASIZE-1)
		return -1;
	if(i<0||i>me->last+1)
		return -2;
	for(j = me->last;j>=i;j--)
	{
		me->data[j+1] = me->data[j];
	}
	me->data[i] = *data;
	me->last++;
	return 0;
}
//实现顺序表固定位置上的删除
int sqlist_delete(sqlist *me,int i)
{
	int j;
	if(i<0||i>me->last)
		return -1;
	for(j = i+1;j<=me->last;j++)
		me->data[j-1] = me->data[j];
	me->last--;
	return 0;
}
//实现顺序表的查找
int sqlist_find(sqlist *me,datatype *data)
{
	int i;
	if(sqlist_isempty(me) == 0)
		return -1;
	for(i = 0;i<=me->last;i++)
		if(me->data[i] == *data)
			return i;
	return -1;
}
//判断顺序表是否为空
int sqlist_isempty(sqlist *me)
{
	if(me->last == -1)
		return 0;
	return -1;
}
//设置顺序表为空
int sqlist_setempty(sqlist *me)
{
	me->last = -1;
	return 0;
}
//返回顺序表的元素个数
int sqlist_getnum(sqlist *me)
{
	return (me->last+1);
}
//显示顺序表元素
void sqlist_display(sqlist *me)
{
	int i;
	if(me->last == -1)
		return;
	for(i = 0;i<=me->last;i++)
		printf("%d ",me->data[i]);
	printf("\n");
	return;
}
//释放内存空间
int sqlist_destory(sqlist *me)
{
	free(me);
}
//合并两个顺序表,不会出现重复元素
int sqlist_union(sqlist *list1,sqlist *list2)
{
	int i;
	for(i = 0;i<=list2->last;i++)
		if((sqlist_find(list1,&list2->data[i]))<0)
			sqlist_isert(list1,0,&list2->data[i]);
	return 0;		
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值