数据结构——顺序表

顺序表的增删查

#include<iostream>
#include<stdlib.h>
#define maxSize 50
//以int数据为例实现一个顺序表
using namespace std;
typedef struct {
	int *data;//存放元素的数组。
	int length;//记录当前顺序表长度(元素个数)。
}sqlList;
bool ListInsert(
	sqlList &L//操作对象,这里使用引用的形式
	, int i//插入位置
	, int element)//插入元素
{
	if (i<1 || i>L.length)//判断是否越界
	{
		printf("插入失败,数组越界");
		return false;
	}
	if (L.length >= maxSize)//判断顺序表是否满
	{
		printf("插入失败,顺序表已满");
		return false;
	}
	for (int j = L.length; j >= i; j--)//从队尾开始向后覆盖,然后将第i个元素赋值给element,将顺序表长度+1
	{
		L.data[j] = L.data[j - 1];
	}
	L.data[i - 1] = element;
	L.length++;
	return true;
}
bool listDelete(sqlList& L, int i)//删除位置i上的某个元素
{
	if (i<1 || i>L.length)
	{
		printf("无效位置,删除失败");
		return false;
   }
	for (int j = i; j < L.length; j++)
	{
		L.data[j - 1] = L.data[j];
	}
	L.length--;
	return true;
}
int LocateElem(sqlList L, int e)//查找为e的元素,返回其位置
{
	for (int i = 0; i < L.length; i++)
	{
		if (L.data[i] == e)
			return i + 1;
	}
	return 0;//若返回0代表不存在
}
//测试程序:
int main()
{
	sqlList L;
	L.data = new int[maxSize];
	int temp_arr[50] = { 1,2,3,4,5,6,7,8,9,10};
	memcpy(L.data,temp_arr, sizeof(temp_arr));
	printf("当前数组为:");
	for (int i = 0; i < 10; i++)
		printf("%d ", L.data[i]);
	L.length = 10;
	printf("\n现在我们将在第5号位置插入一个int数据213 \n");
	ListInsert(L, 5, 231);
	printf("当前数组为:\n");
	for (int i = 0; i < L.length; i++)
		printf("%d ", L.data[i]);
	printf("\n现在我们删除5号位置上的元素\n");
	listDelete(L, 5);
	printf("当前数组为:\n");
	for (int i = 0; i < L.length; i++)
		printf("%d ", L.data[i]);
	printf("\n下面查找元素9的位置,位置为:");
	printf("%d", LocateElem(L, 9));
}

运行结果:
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值