顺序表 查找 插入 删除 操作
2017-06-11 22:08
330 查看
#include<iostream>
using namespace std;
//定义线性表顺序存储结构
#define MAXSIZE 100
typedef struct
{
int elem[MAXSIZE];
int last;//记录线性表中最后一个元素在数组中的位置
}Seqlist;
//查找顺序表中的元素e
int Locate(Seqlist * L, int e)
{
int i = 0; //i为扫描计数器,表示数组下标
while (i <= L->last&&L->elem[i]!= e)
{
i++;
}
if (i <= L->last)//结构数组
{
return i+1;//返回其下标
}
else
{
return -1;
}
}
//顺序表的插入运算
//在线性表L第i(1<i<n+1)个位置之前插入一个值为x的新元素,一共有n+1个插入位置
int InsList(Seqlist *L, int i, int e)//结构指针
{
int j = 0;
if (L->last >= MAXSIZE - 1)
{
cout << "表满,无法插入" << endl;
return -1;
}
if (i < 1 || i >= L->last + 2)
{
cout << "插入位置不合法" << endl;
return -1;
}
for (j = L->last; j >= i - 1; j++)//到要插入的数据i的前一个数据停止,将i以及i之后的元素后移,j为下标
{
L->elem[j + 1] = L->elem[j];
}
L->elem[i - 1] = e;
L->last++;
return 1;
}
//顺序表的删除
//在顺序表L中删除第i个数据元素,并用指针参数e返回其值,1<=i<=L->last + 1
int DelList(Seqlist * L,int i,int * e)
{
int j = 0;
if (i<1 || i>L->last + 1)
{
cout << "删除位置不合法" << endl;
return -1;
}
*e = L->elem[i-1];
//从第i个元素开始,下标i覆盖i-1
for (j = i; j < L->last; j++)
{
L->elem[i - 1] = L->elem[i];
}
L->last--;
return 1;
}
顺序表查找:
查找给定值与x相等的元素,实际是在数组中顺序查找,从第一个元素开始依次和x比较,查找中使用结构体指针传递效率高。
顺序表的插入:
线性的顺序表中的实际元素可能未达到MAXSIZE,因此需要一个变量Last来记录当前线性表中最后一个元素在数组中的位置,Last是起到指针的作用,始终在线性表中指向数组的最后一个元素,表空是Last=-1,为了体现数据组织的整体性,通常将数组和变量Last封装成一个结构作为顺序表的类型。
1.判断是否表满
2.判断插入位置是否合法
3.插入数据
4.Last加一
顺序表的删除:
删除第i个数据元素,i必须在范围之内
表为空时,不能删除
现将数据保存在指针中,在进行元素移动
Last减一
using namespace std;
//定义线性表顺序存储结构
#define MAXSIZE 100
typedef struct
{
int elem[MAXSIZE];
int last;//记录线性表中最后一个元素在数组中的位置
}Seqlist;
//查找顺序表中的元素e
int Locate(Seqlist * L, int e)
{
int i = 0; //i为扫描计数器,表示数组下标
while (i <= L->last&&L->elem[i]!= e)
{
i++;
}
if (i <= L->last)//结构数组
{
return i+1;//返回其下标
}
else
{
return -1;
}
}
//顺序表的插入运算
//在线性表L第i(1<i<n+1)个位置之前插入一个值为x的新元素,一共有n+1个插入位置
int InsList(Seqlist *L, int i, int e)//结构指针
{
int j = 0;
if (L->last >= MAXSIZE - 1)
{
cout << "表满,无法插入" << endl;
return -1;
}
if (i < 1 || i >= L->last + 2)
{
cout << "插入位置不合法" << endl;
return -1;
}
for (j = L->last; j >= i - 1; j++)//到要插入的数据i的前一个数据停止,将i以及i之后的元素后移,j为下标
{
L->elem[j + 1] = L->elem[j];
}
L->elem[i - 1] = e;
L->last++;
return 1;
}
//顺序表的删除
//在顺序表L中删除第i个数据元素,并用指针参数e返回其值,1<=i<=L->last + 1
int DelList(Seqlist * L,int i,int * e)
{
int j = 0;
if (i<1 || i>L->last + 1)
{
cout << "删除位置不合法" << endl;
return -1;
}
*e = L->elem[i-1];
//从第i个元素开始,下标i覆盖i-1
for (j = i; j < L->last; j++)
{
L->elem[i - 1] = L->elem[i];
}
L->last--;
return 1;
}
顺序表查找:
查找给定值与x相等的元素,实际是在数组中顺序查找,从第一个元素开始依次和x比较,查找中使用结构体指针传递效率高。
顺序表的插入:
线性的顺序表中的实际元素可能未达到MAXSIZE,因此需要一个变量Last来记录当前线性表中最后一个元素在数组中的位置,Last是起到指针的作用,始终在线性表中指向数组的最后一个元素,表空是Last=-1,为了体现数据组织的整体性,通常将数组和变量Last封装成一个结构作为顺序表的类型。
1.判断是否表满
2.判断插入位置是否合法
3.插入数据
4.Last加一
顺序表的删除:
删除第i个数据元素,i必须在范围之内
表为空时,不能删除
现将数据保存在指针中,在进行元素移动
Last减一
相关文章推荐
- 顺序表的查找、插入、删除、合并操作及其优缺点
- 顺序表有关操作(查找、插入、删除)
- 线性表的顺序存储格式基本操作:初始化、插入、删除、查找、打印
- C语言顺序表的插入、删除、查找操作实现
- 编程菜鸟的日记-初学尝试编程-顺序表的类定义及其基本操作算法(创建表、元素插入、元素删除、顺序查找、测表空、求表长、输出等)
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- 顺序表的实现以及简单的 插入,删除,查找,输出操作
- 顺序表的各种操作(建立,查找,删除,插入等)
- 顺序表的查找、插入、删除、合并操作及其优缺点
- 顺序表的建立、插入、删除、查找、遍历操作
- (1)顺序表的操作 ① 输入一组整型元素序列,建立线性表的顺序存储结构。 ② 实现该线性表的遍历。 ③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 ④ 在该顺序表中删除或插入指
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- 顺序队列的初始化,建立,插入,查找,删除
- 二叉查找树的操作(插入、删除、查找)
- 跳表(Skip List)的介绍以及查找插入删除等操作
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 跳表(Skip List)的介绍以及查找插入删除等操作
- 单链表的各种操作(建立,查找,删除,插入,归并等)
- 关于链表结构的基本操作 c 实现 (创建,插入删除,反转,合并链表,查找,是否有环,链表相交情况)
- 顺序表的实现(包含插入,删除,及查找)