顺序表的建立与基本操作

本文主要介绍顺序表的动态分配,插入,删除,查找操作

一,定义一个顺序表

typedef struct{
	int *data;    //指示动态分配数组的指针 
	int MaxSize;   //顺序表的最大容量
	int length;    //顺序表的当前长度 
}SeqList;

二,初始化一个顺序表

void InitList(SeqList &L){
	//用malloc 函数申请一片连续的存储空间
	L.data = (int *)malloc(InitSize*sizeof(int)); 
	L.length = 0;
	L.MaxSize = InitSize;
}

三,动态增加数组长度

//增加动态数组的长度
void IncreaseSize(SeqList &L,int len){
	int *p = L.data;
	L.data = (int *)malloc((L.MaxSize+len)*sizeof(int));
	for(int i = 0;i<L.length;i++){
		L.data[i] = p[i];
	}
	L.MaxSize = L.MaxSize+len;
	free(p);
	
} 

四,插入操作

//插入操作
bool ListInsert(SeqList &L, int i, int e){
	if(i<1||i>L.length)
		return false;
	if(L.length>=L.MaxSize)
		return false;
	for(int j = L.length; j>=i; j--){
		L.data[j] = L.data[j-1];  //将第i及以后位置的元素向后移 
	}
	L.data[i-1] = e;
	L.length++;
	return true;
} 

五,删除操作

//删除操作(按位置删除)
bool ListDelete(SeqList &L, int i , int &e){
	if(i<1||i>L.length)
		return false;
	e = L.data[i-1];  //被删除的元素值 
	for (int j = i; j<L.length; j++)
		L.data[j-1] = L.data[j];   //将被删除元素后面的元素向前移
	L.length--;
	return true; 
	 
} 

六,按位查找操作

//按位查找
int GetElem(SeqList L,int i){
	if(i>0||i<L.length)
		return L.data[i-1];
	return -1;
} 

七,按值查找操作

//按值查找
int LocateElem(SeqList L,int e){
	for(int i=0;i<L.length;i++){
		if(L.data[i]==e)
			return i+1;
	}
	return -1;
} 

完整的代码结构,实现,函数调用流程可下载资源查看

 https://download.csdn.net/download/helloword111222/85660346

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢快的小太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值