《数据结构》 顺序表常用操作代码集合
时间:2022-04-26
本文章向大家介绍《数据结构》 顺序表常用操作代码集合,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Ps:每段代码中,添加了署名Solo的是博主自己写的,其余来自课本或者老师。
//定义线性表的存储结构
#define MAXSIZE 100
typedef struct
{
ElemType elem[MAXSIZE]; //ElemType自定义
int last;
} SeqList;
//线性表按查找内容运算 Locate(L,e)函数
int Locate(SeqList L, ElemType e)
{
i = 0;
while((i <= L.last) && (L.elem[i] != e))
i++;
if(i <= L.last) return(i + 1);
else return(-1);
}
//线性表的插入操作
#define OK 1
#define ERROR 0
int InList(Seqlist *L, int i, ElemType e)
{
int k;
if(i < 1 || i > L->last+2)
{
printf("插入位置i不合法");
return ERROR;
}
if(L->last >= MAXSIZE - 1)
{
printf("表已满,无法插入");
return ERROR;
}
for(k = L->last; k >= i-1; k--)
L->elem[k+1] = L->elem[k];
L->elem[i-1] = e;
L->last++;
return OK;
}
//线性表的删除操作
int DelList(SeqList *L, int i, ElemType *e)
{
int k;
if(i < 1 || i > L->last+1)
{
printf("删除位置不合法");
return ERROR;
}
*e = L->elem[i-1];
for(k = i; i <= L->last; k++)
L->elem[k-1] = elem[k];
L->last--;
return OK;
}
//线性表原地逆置
int SListRev(SeqList *L)
{
int i;
ElemType t;
for(i=0; i<L->last/2; i++)
{
t = a[i]; a[i] = a[n-i-1]; a[n-i-1] = t;
}
return Ok;
}
//线性表的合并运算1
void mergeList(SeqList *LA, Seqlist *LB, Seqlist *LC)
{
int i,j,k;
i=0; j=0; k=0;
while(i <= LA->last && j <= LB->last)
if(LA->elem[i] <= LB->elem[j])
{
LC->elem[k] = LA->elem[i];
i++; k++;
}
else{
LC->elem[k] = LB->elem[i];
j++; k++;
}
while(i <= LA->last)
{
LC->elem[k] = LA->elem[i];
i++; k++;
}
while(j <= LB->last)
{
LC->elem[k] = LA->elem[j];
j++; k++;
}
LC->last = LA->last + LB->last + 1;
}
//线性表的合并运算2——Solo
void mergeList(SeqList *LA, Seqlist *LB, Seqlist *LC)
{
int i,j,k;
i=0; j=0; k=0;
while(i <= LA->last || j <= LB->last)
if(LA->elem[i] <= LB->elem[i] || (i <= LA->last && j > LB->last )
{
LC->elem[k] = LA->elem[i];
i++; k++;
}
if(LA->elem[i] > LB->elem[j] || (i > LA->last && j <= LB->last))
{
LC->elem[k] = LB->elem[i];
j++; k++;
}
}
/*删除非递减顺序表L中所有值相等元素——Solo*/
//①若相等的值只有一个,为e,只有该种情况才能满足《数据结构》课本习题的要求
void Delsame(Seqlist *L e)
{
int i,j;
for(i=0,j=0; i<L->last; i++)
if(L->elem[i] != e) { L->elem[j] = L->elem[i]; j++; }
L->last = j+1;
}
//②若相等的值有很多,且不确定 两种方法
void Delmulsame(Seqlist *L)
{
int i,j,k;
for(i=0; i<L->last; i++)
for(j=1; j<L->last; j++)
{
if(L->elem[i] = L->elem[j])
for(k=j; j<L->last; k++)
{
L->elem[k] = L->elem[k+1];
L->last--;
}
}
}
void Delmulsame(Seqlist *L)
{
int i,j,k,t;
for(i=0; i<L->last-1; i++)
{
for(k=i, j=i+1; j<n; j--) //冒泡法排序
if(a[j] <a[k]) k = j;
if(k != i)
{ t = a[i]; a[i] = a[k]; a[k] = t; }
}
/* for(i=0; i<L->last-1; i++) //这段被注释掉了,是选择法排序
for(j=L-last-1; j>=i; j--)
if(a[j] > a[j+1])
{ a[j] = t; a[j] = a[j+1]; a[j+1] = a[j]; } */
for(i=0; i<L->last; i++)
{
if(L->elem[i] = L->elem[i+1])
{
for(k=i; k<L->last; k++)
{
L->elem[k] = L->elem[k+1];
k--;
L->last--;
}
}
}
}
zhihu:Solo | weibo@从流域到海域
- 深度学习胸部x射线
- C+实现神经网络之壹—Net类的设计和神经网络的初始化
- 死亡不可避免,但何时死,人工智能或有发言权
- 打开手机的这个功能,微信支付宝不怕盗刷!
- 手把手教你cuda5.5与VS2010的编译环境搭建
- Apache实现反向代理负载均衡
- linux下Apache服务器使用入门----httpd.conf
- linux下JBOSS使用入门
- CentOS下重新安装JDK,避免OpenJDK干扰
- linux虚拟机与winodows共享文件夹----linux安装VMware tools
- 虚拟机vmware与本地磁盘共享方法
- ADX3000二层的负载均衡设计问题
- cuda by example
- ADX3000的组网配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP date()格式MySQL中插入datetime方法
- Python sklearn中的.fit与.predict的用法说明
- 基于python实现ROC曲线绘制广场解析
- Python建造者模式案例运行原理解析
- PHP PDOStatement::errorInfo讲解
- PDO::setAttribute讲解
- Yii2.0建立公共方法简单示例
- PHP PDOStatement::execute讲解
- 详解用Python爬虫获取百度企业信用中企业基本信息
- PHP连接及操作PostgreSQL数据库的方法详解
- 使用Keras建立模型并训练等一系列操作方式
- PHP获取ttf格式文件字体名的方法示例
- PHP iconv()函数字符编码转换的问题讲解
- 使用PHP反射机制来构造"CREATE TABLE"的sql语句
- PHP PDOStatement::fetch讲解