数据结构--基础之顺序表的一种实现(堆实现)基于C++语言。Sqlite(初始化,增,删,查,定,判,打印,求长,销毁)

Mr.lei:来人,上代码!

好的。

/**********************************************************/
/*Title:顺序表
/*WorkSpace:C++环境下的实现
/*
/*Date:2023/4/12
/*
/*Author: Mr.Lei~
/*Copyright@ 版权所有,侵权不究。
/*QQ:2223696890
/*
/***********************************************************/


#include<stdio.h>
#include<stdlib.h>
#define N 10
#define Errno 0
typedef struct		//类型定义:顺序表
{
	int length;
	int Maxsize;
	int *data;
}Sqlite;


void InitSqlite(Sqlite &L)		//顺序表初始化函数
{
	L.length = 0;
	L.Maxsize = N;
	L.data = (int*)malloc(L.Maxsize*sizeof(int));
}

void IncreaseSqlite(Sqlite &L, int len)		//顺序表扩容
{
	int *p = L.data;
	int i;
	
	L.data = (int *)malloc((L.Maxsize + len)*sizeof(int));
	for(i = 0; i < L.length; i++)
	{
		L.data[i] = p[i];
	}
	
	free(p);
	
	L.Maxsize += len; 
}

int GetElem(Sqlite &L, int i)	//获取顺序表的第i个位置的元素
{
	if(i < 1 || i > L.length)
	{
		printf("查找失败!\n");
		return Errno;	//失败返回0
	}
	return L.data[i-1];
	
}

int LocateElem(Sqlite &L, int e)			//获取一个元素第一次出现在顺序表中的位置
{
	int i;
	for(i = 0; i < L.length; i++)
	{
		if(L.data[i] == e)
		{
			return i+1;
		}
	}
	return Errno;	//失败返回0
}


int SqliteInsert(Sqlite &L, int i, int e)	//插入表函数,参数1:顺序表 参数2:插入位置 参数3:插入值
{
	int k;
	int tmp;
	if(i <1 || i > L.length +1)
	{
		return Errno;
	}
	if(L.length == L.Maxsize)
	{
		return Errno;
	}
	if(i < L.length + 1)
	{
		for(k = L.length; k >= i; k--)
		{
			L.data[k] = L.data[k-1];
		}
	}
	L.data[i-1] = e;
	L.length++;
	return 1;
}

int DeleteSqlite(Sqlite &L, int i)	//删除表元素函数,参数1:顺序表 参数2:删除位置 返回值:删除元素值
{
	int e;
	int k;
	if(i < 1 || i > L.length)
	{
		return Errno;
	}
	if(L.length == 0)
	{
		return Errno;
	}
	e = L.data[i-1];
	if(i < L.length)
	{
		for(k = i; k <= L.length; k--)
		{
			L.data[k-1] = L.data[k];
		}
	}
	L.length--;
	return e;
}

void PrintSqlite(Sqlite &L)		//打印表
{
	int i;
	for(i = 0; i < L.length; i++)
	{
		printf("%d\n",L.data[i]);
	}
}

int LengthSqlite(Sqlite &L)		//返回表长度
{
	return L.length;
}

void DestorySqlite(Sqlite &L)	//释放堆中的表单
{
	L.length = 0;
	L.Maxsize = 0;
	free(L.data);
}

int main()
{
	system("pause");	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值