顺序线性表的插入、删除、合并

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 顺序线性表的插入、删除、合并前言插入删除合并


前言


#define LISTSIZE 100 //线性表初始分配的储存空间大小
#define LISTINCREASEDSIZE 10 //线性表增加的储存空间大小
typedef struct{
ElemType * elem;
int length; //长度
int listsize; //分配的存储空间大小
} List;


插入


Status ListInsert (List & list, int i, ElemType e) {
// i的合法值为1≤i≤ListLength(list) + 1
if (i<1 l| i>list. length+ 1) return ERROR; // i值不合法
if (list. length >:list. listsize) {
//当前存储空间已满,增加分配
newbase = (ElemType * )realloe(L. elem,(list. listsize + LISTINCREMENT) * sizeof (ElemType)) ;
if (! newbase ) Exit(OVERFLOW) //存储分配失败
list. elem = newbase;//新基址
list. listsize += LISTITCRMENT;//增加存储容量
q= &(L.elem[(i-1]);//q为插人位置
for(ρ= &(list.elem[list.length - 1]);p>=q;--p)
*(p+1)=*p;
*q = e;//插人e
++ L. length;//表长增1
return OK;
}


删除


Status ListDelete (List &list, int i, ElemType &e) {
//在顺序线性表L中删除第i个元素,并用e返回其值
// i的合法值为1≤i≤ListLength(list)
if((i < 1) || (i > list.length)) returu ERROR //i值不合法 p= &(L.elem[i-1]);
p = &(list.elem[i - 1]);
e=*p;
q = list.elem + list.length-1;//表尾元素的位置
for ( ++ p; p<=q; ++p)
*(p-1) = * p;//被删除元素之后的元素左移
--list.length;
return OK;
}


合并



解释:非递减排列

递减排列:5、4、3、2、1

递增排列:1、2、3、4、5

非递减排列 :1、2、3、3、4、5

允许出现重复的元素存在

void MergeList (List La, SqList Lb, SqList &Ic) {
//已知顺序线性表Ia和Lb的元素按值非递减排列,归并之后得到的表Lc也按值非递减排列
pa = La.elem; //开头
pb = Lb. elem;
Lc.listsize = Lc. length = La.1ength+ Lb. length;//获取新表的长度
pc = Lc.elem = (ElemType * )malloc(Lc. listsize * sizeof(ElemType));//获取内存空间
if (!Lc. elen)exit(OVERRFLOW); /存储分配失败
 pa_last = La.elem + La. length- 1;//获取表a的最后一个节点
pb_last = Lb. elem + Lb. length- 1;
while(pa <= pa_last && pb <= pb.last){
if(*pa<= *pb) 
*pc++= *pa++;//把当前pa节点插入表c,且pa、pc向下移动一个节点
else
 *pc++= *pb++; 
while(pa<= pa._last) *pc++ = *pa++ ; //插入剩余的节点
while(pb<= pb_1ast) *pc++ = *pb++:
} 


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
Linux C++
合并k个已排序的链表
合并k个已排序的链表
29 0
|
存储
顺序表oj--移除元素&&删除重复项&&合并两个有序数组
顺序表oj--移除元素&&删除重复项&&合并两个有序数组
100 0
|
5月前
二叉树的创建、插入和删除
二叉树的创建、插入和删除
27 1
|
6月前
|
存储
单链表相关操作(插入,删除,查找)
单链表相关操作(插入,删除,查找)
50 4
删除有序链表中重复的元素-II(链表)
双指针,slow和fast,并且增加标记flag初始为1。
46 0
|
C++
【C/C++练习】合并k个已排序的链表(一)
【C/C++练习】合并k个已排序的链表(一)
75 0
|
C++
【C/C++练习】合并k个已排序的链表(二)
【C/C++练习】合并k个已排序的链表(二)
80 0
【C/C++练习】合并k个已排序的链表(二)
|
存储 C++
链表操作:插入、删除与遍历
(笔者画图不易呜呜)链表是一种基本的数据结构,它可以用来存储一系列的元素,并且支持灵活的插入、删除操作。在计算机科学中,链表常常用于构建更复杂的数据结构,如栈、队列以及图等。
307 0
|
存储 算法
数组算法:倒置,查找,插入,删除
数组算法:倒置,查找,插入,删除
80 0
|
存储 前端开发 程序员
合并两个排序的链表
合并两个排序的链表
合并两个排序的链表