首页 > 其他分享 >线性表——顺序表(动态分配)

线性表——顺序表(动态分配)

时间:2024-07-09 09:34:08浏览次数:16  
标签:顺序 线性表 int void List 动态分配 length data

#include<bits/stdc++.h>
using namespace std;

#define InitSize 5
typedef struct SeqList{
	int* data;	//动态分配的数组指针 
	int length;	//数组当前个数
	int MaxSize;	//数组的最大容量 
}List;

//动态分配的初始化 
void InitList(List* L){
	L->data=new int[InitSize];	//分配存储空间 
	L->length=0;	//顺序表初始长度为0 
	L->MaxSize=InitSize;	//初始存储容量 
}

//插入 
void ListInsert(List* L,int i,int e){
	if(i<1||i>L->length+1)
		return;
	if(L->length==L->MaxSize){
		cout<<"Insert Error:SeqList Already Full!"<<endl;
		return;
	}
	for(int j=L->length;j>=i;j--)
		L->data[j]=L->data[j-1];
	L->data[i-1]=e;
	L->length++;
}

//删除 
void ListDelete(List* L,int i){
	if(i<1||i>L->length)
		return;
	for(int j=i;j<L->length;j++)
		L->data[j-1]=L->data[j];
	L->length--;
}

//按值查找 
void LocateElem(List* L,int e){
	for(int i=0;i<L->length;i++){
		if(L->data[i]==e){
			cout<<"Element "<<e<<" Found!"<<endl;
			return;
		}
	}
	cout<<"Search Error:Element "<<e<<" not Found!"<<endl;
}

//打印 
void PrintList(List* L){
	for(int i=0;i<L->length;i++)
		cout<<L->data[i]<<" ";
	cout<<endl;
} 

int main(){
	List* L=new List;
	InitList(L);
	ListInsert(L,1,1);
	ListInsert(L,2,2);
	ListInsert(L,3,3);
	ListInsert(L,4,4);
	ListInsert(L,5,5);
	PrintList(L);
	ListInsert(L,2,6);
	ListDelete(L,2);
	PrintList(L);
	LocateElem(L,4);
	LocateElem(L,6);
	delete L;
	return 0;
}

标签:顺序,线性表,int,void,List,动态分配,length,data
From: https://www.cnblogs.com/b1ackstar/p/18291081

相关文章

  • 线性表——单链表
    #include<bits/stdc++.h>usingnamespacestd;typedefstructLNode{ intdata; structLNode*next;}LNode,*List;//初始化voidInitList(List&L){ L=(LNode*)malloc(sizeof(LNode)); L->next=NULL;}//头插voidListInsertHead(List&L,inte)......
  • 学生管理系统(通过顺序表,获取连续堆区空间实现)
    将学生的信息,以顺序表的方式存储(堆区),并且实现封装函数:1】顺序表的创建,2】判满、3】判空、4】往顺序表里增加学生信息、5】遍历学生信息6】任意位置插入学生信息7】任意位置删除学生信息8】修改学生信息9】查找(按学生的学号查找)、10】删除重复学生信息11】销毁顺序......
  • 数据结构:二叉树的顺序结构及代码实现
    一:二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操......
  • mybatis-plus中last和orderBy的连用的使用顺序
    1. mybatis-plus中last和orderBy的连用的使用顺序在MyBatis-Plus中,last方法用于在构建查询时添加自定义的SQL片段,而orderBy方法用于指定排序规则。当你想要结合使用这两个方法时,可以先调用orderBy指定排序规则,然后调用last添加自定义的SQL片段。@Autowired......
  • 二叉树的顺序存储
    目录顺序存储:简介:节点的位置关系:优缺点:优点:缺点:二叉树顺序存储的模拟实现:向上调整算法:向下调整算法:二叉树的初始化:直接初始化:建堆初始化:二叉树的头删:二叉树的尾插:二叉树的取顶端元素:二叉树的判空:二叉树的销毁:完整代码:顺序存储:简介:顺序结构存储就是使......
  • return isPlainObject(res) || Array.isArray(res) ? observer(res, cb) : res; 这个
    这段代码主要是在实现一个深度观察者模式的部分逻辑,用于递归地处理对象和数组,以便在数据结构变化时触发回调。这里的关键是理解条件运算符和函数调用的执行顺序。让我们逐步分析:条件表达式的左侧:isPlainObject(res):这个函数检查res是否是一个纯对象(即普通的JavaScript对象......
  • C语言笔记28 •顺序表经典算法OJ题•
    1.删除数组中指定的元素//算法实现intremoveElement(int*nums,intnumsSize,intval){   intsrc=0;//nums[src]==valsrc++   intdst=0;///nums[src]!=valsrc++ dst++   while(src<numsSize)   {      if(nums[src]==va......
  • 构建LangChain应用程序的示例代码:56、如何实现一个多智能体模拟,其中没有固定的发言顺
    多智能体分散式发言人选择示例展示了如何实现一个多智能体模拟,其中没有固定的发言顺序。智能体自行决定谁来发言,通过竞价机制实现。我们将在下面的示例中展示一场虚构的总统辩论来演示这一过程。导入LangChain相关模块fromtypingimportCallable,Listimporttena......
  • COLD冷融合:不确定性感知多模态情绪识别的校准和顺序潜在分布融合
    论文标题:COLDFusion:CalibratedandOrdinalLatentDistributionFusionforUncertainty-AwareMultimodalEmotionRecognition中文译名:不确定性感知多模态情绪识别的校准和顺序潜在分布融合原文地址:https://ieeexplore.ieee.org/abstract/document/10287630/背景:深......
  • 函数的调用参数注意注意注意顺序
    A=[-1000000;0.0729-0.0558-.9970.08020.04150;-4.750.598-0.1150-0.031800;1.53-3.050.388-0.46500;000.0805100;00100-0.333];B=[1000000]';C=[00100-0.333];D=0;[num,den]=ss2tf(A,B,C,D);sysGs=tf(num,den);sy......