数据结构-线性顺序表操作
2017-12-19 17:15
381 查看
1.初始化:构造一个空的顺序表,length域为0,表示表中没有数据元素
算法如下:
SeqList SeqListInit()
{// 构造一个空的线性表L
SeqList L;
L.length= 0;
return L;
}
2.插入操作:插入位置i,即在ai前插入数据,x,则原有i-1 的位置为x,i-2 前,顺序不变,i之后的位置,顺序后移
a1,a2,……ai-1,x,ai,……an
算法如下:利用j 将顺序表中,i-1 之后的所有元素后移,将i-1 位置赋值给x,时间复杂度 为O(n)
void SeqListInsert(SeqList L,int i,ElemType x)// i 为位置
{//在顺序表中的第i个位置插入元素x
if(L.length == MAXSIZE)
{printf(" 表满");exit(0)}
if(i<1 || i>L.length+1)
{printf("位置错");exit(0)}
for(j=L.length-1;j>=i-1;j--)
{
L.data[j+1] = L.data[j];
}
L.data[i-1] = x;
L.length ++;
}
3.删除,第i个元素,第i个元素的位置为i-1,该位置后的所有元素上移一位
a1,a2,……ai-1,ai,ai+1……an
算法如下:时间复杂度O(n)
void SeqListDelete(SeqList L,int i)
{//删除顺序表中的第i元素
if(i<1 || i>L.length)
{print("位置非法");exit(0)}
for(j=i;j<=L.length-1;j++)
{L.data[j-1] = L.data[j];}
L.length --;
}
4.按值查找
线性表中的按值查找,依次比较两个值,相等,返回位置
算法如下:时间复杂度O(n)
int SeqListLocate(SeqList L,ElemType x)
{//在顺序表L中查询第一个与x值相等的元素,若查找成功,返回下标
i=1;
while(i <= L.length && L.data[i-1]!=x)
i++;
if(i<=L.length)
return i;
else
return 0;
}
算法如下:
SeqList SeqListInit()
{// 构造一个空的线性表L
SeqList L;
L.length= 0;
return L;
}
2.插入操作:插入位置i,即在ai前插入数据,x,则原有i-1 的位置为x,i-2 前,顺序不变,i之后的位置,顺序后移
a1,a2,……ai-1,x,ai,……an
算法如下:利用j 将顺序表中,i-1 之后的所有元素后移,将i-1 位置赋值给x,时间复杂度 为O(n)
void SeqListInsert(SeqList L,int i,ElemType x)// i 为位置
{//在顺序表中的第i个位置插入元素x
if(L.length == MAXSIZE)
{printf(" 表满");exit(0)}
if(i<1 || i>L.length+1)
{printf("位置错");exit(0)}
for(j=L.length-1;j>=i-1;j--)
{
L.data[j+1] = L.data[j];
}
L.data[i-1] = x;
L.length ++;
}
3.删除,第i个元素,第i个元素的位置为i-1,该位置后的所有元素上移一位
a1,a2,……ai-1,ai,ai+1……an
算法如下:时间复杂度O(n)
void SeqListDelete(SeqList L,int i)
{//删除顺序表中的第i元素
if(i<1 || i>L.length)
{print("位置非法");exit(0)}
for(j=i;j<=L.length-1;j++)
{L.data[j-1] = L.data[j];}
L.length --;
}
4.按值查找
线性表中的按值查找,依次比较两个值,相等,返回位置
算法如下:时间复杂度O(n)
int SeqListLocate(SeqList L,ElemType x)
{//在顺序表L中查询第一个与x值相等的元素,若查找成功,返回下标
i=1;
while(i <= L.length && L.data[i-1]!=x)
i++;
if(i<=L.length)
return i;
else
return 0;
}
相关文章推荐
- C++数据结构之线性顺序表基本操作
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- 南邮数据结构实验1 顺序表操作
- 数据结构之线性表的顺序结构操作2-(删除,插入,查值等)
- 数据结构2:线性表的构建和基本操作
- 数据结构-顺序表相关操作
- 数据结构——线性结构(2)——链栈中的push和pop操作
- 数据结构(线性表的操作:建立表,插入元素,删除元素,取元素,置空)
- 数据结构_顺序表相关操作C语言源代码
- 数据结构之线性表(二)——线性表的操作
- 数据结构之线性表(顺序表)的基本操作
- 【数据结构_顺序表_List_0943】顺序表插入操作的实践
- 数据结构笔记(二)线性表的链式表示和基本操作
- 数据结构一一线性表的顺序存储结构之插入操作
- 数据结构与算法2:线性结构与线性表-顺序表
- 数据结构(1)--线性表顺序表的主要操作的实现
- 数据结构实验--顺序表操作
- 数据结构实验1 线性表的有关操作
- 爹地的实验:实验一: 数据结构实验一线性表的基本操作实现及其应用
- 数据结构之—线性表之—顺序表