线性表--顺序表的实现
来源:互联网 发布:云计算基础设施建设 编辑:程序博客网 时间:2024/06/08 06:00
/*
顺序表
*/
//存储结构定义
const int MaxSize = 10; //最多存放10个元素
typedef int DataType; //数据类型
typedef struct
{
DataType data[MaxSize]; //存放数据元素数组
int length; //线性表长度
}SeqList;
//初始化顺序表
void InitList(SeqList &L)
{
L.length = 0; //初始化为0;
}
//建立顺序表:将给定数据元素放到一个长度为n的顺序表中,并将元素个数作为长度
void Creat(SeqList &L,DataType a[],int n)
{
if(n>MaxSize){printf("参数非法");exit(-1);}
for(i=0;i<n;i++)
{
L.data[i] = a[i];
L.length = n;
}
}
//求顺序表的长度
int Length(SeqList &L)
{
return L.length;
}
//按位查找:时间复杂度为O(1)
DataType Get(SeqList &L,int i)
{
if(i<1 && i>L.length) {printf("查找位置非法");exit(-1);}
else return L.data[i-1]; //按位查找第i个元素,下标为i-1
}
//按值查找
int Locate(SeqList &L,DataType x)
{
for(i=1;i<L.length;i++)
if(L.data[i] == x) //下标为i的元素等于x,返回i+1
return i+1; //查找失败,退出循环
return 0;
}
//插入操作
void Insert(SeqList &L,int i,DataType x)
{
if(L.length >= MaxSize)
{
printf("上溢"); //表满时上溢
exit(-1);
}
if(i<1||i>length+1)
{
printf("位置"); //位置不合理
exit(-1);
}
for(j = L.length;j>=i;j--) //j表示元素序号
L.data[j] = L.data[j-1];
L.data[i-1] == x;
L.length++;
}
//删除操作:等概率情况下,时间复杂度O(n)
DataType Delete(SeqList &L,int i)
{
if(L.length == 0)
{
printf("下溢");
exit(-1);
}
if(i<1||i>L.length)
{
printf("位置");
exit(-1);
}
x = L.data[i-1];
for(j=i;j<L.length;j++)
L.data[j-1] = L.data[j];
L.length--;
return x;
}
//判空操作
int Empty (SeqList &L)
{
if(L.length == 0) //顺序表为空返回1
return 1;
else
return 0;
}
//遍历操作
void PrintList(SeqList &L)
{
for(i=0;i<l.length;i++)
printf(L.data[i]); //依次输出线性表元素
}
顺序表
*/
//存储结构定义
const int MaxSize = 10; //最多存放10个元素
typedef int DataType; //数据类型
typedef struct
{
DataType data[MaxSize]; //存放数据元素数组
int length; //线性表长度
}SeqList;
//初始化顺序表
void InitList(SeqList &L)
{
L.length = 0; //初始化为0;
}
//建立顺序表:将给定数据元素放到一个长度为n的顺序表中,并将元素个数作为长度
void Creat(SeqList &L,DataType a[],int n)
{
if(n>MaxSize){printf("参数非法");exit(-1);}
for(i=0;i<n;i++)
{
L.data[i] = a[i];
L.length = n;
}
}
//求顺序表的长度
int Length(SeqList &L)
{
return L.length;
}
//按位查找:时间复杂度为O(1)
DataType Get(SeqList &L,int i)
{
if(i<1 && i>L.length) {printf("查找位置非法");exit(-1);}
else return L.data[i-1]; //按位查找第i个元素,下标为i-1
}
//按值查找
int Locate(SeqList &L,DataType x)
{
for(i=1;i<L.length;i++)
if(L.data[i] == x) //下标为i的元素等于x,返回i+1
return i+1; //查找失败,退出循环
return 0;
}
//插入操作
void Insert(SeqList &L,int i,DataType x)
{
if(L.length >= MaxSize)
{
printf("上溢"); //表满时上溢
exit(-1);
}
if(i<1||i>length+1)
{
printf("位置"); //位置不合理
exit(-1);
}
for(j = L.length;j>=i;j--) //j表示元素序号
L.data[j] = L.data[j-1];
L.data[i-1] == x;
L.length++;
}
//删除操作:等概率情况下,时间复杂度O(n)
DataType Delete(SeqList &L,int i)
{
if(L.length == 0)
{
printf("下溢");
exit(-1);
}
if(i<1||i>L.length)
{
printf("位置");
exit(-1);
}
x = L.data[i-1];
for(j=i;j<L.length;j++)
L.data[j-1] = L.data[j];
L.length--;
return x;
}
//判空操作
int Empty (SeqList &L)
{
if(L.length == 0) //顺序表为空返回1
return 1;
else
return 0;
}
//遍历操作
void PrintList(SeqList &L)
{
for(i=0;i<l.length;i++)
printf(L.data[i]); //依次输出线性表元素
}
阅读全文
1 0
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 顺序线性表的实现
- 线性表的顺序实现
- 线性顺序表的实现
- 线性表的顺序实现
- 线性表顺序实现
- 线性表顺序实现
- 线性表顺序实现
- 线性表顺序实现
- 线性表-顺序实现
- 线性表--顺序实现
- 线性表的顺序存储的实现
- 线性表的实现--顺序表&&链表
- 线性表之顺序表的实现
- c语言设计模式
- jQuery AJAX简介和简单实例
- 高德地图运用
- ServerSocket的使用
- 欢迎使用CSDN-markdown编辑器
- 线性表--顺序表的实现
- C 总结
- Accessing Data with JPA
- Docker run命令参数详解
- ionic2跨平台项目开发之自定义主题---换肤
- 辣眼睛!晒晒职业生涯中见过的奇葩辞职理由
- MVC设计模式
- Java的基本知识
- 页面管理