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");
}