顺序表的顺序存储

本文介绍了数据结构中的顺序表在C#中的实现,包括顺序表的初始化、在指定位置插入元素、删除元素、按值查找以及两个有序顺序表的合并操作。详细阐述了每个操作的步骤和注意事项,如插入和删除时的元素移动,以及顺序查找的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用于数据结构中顺序表
一.定义

typedef struct
{
	ElemType data[MAXSIZE];
	int length;
}SeqList;
Seqlist L;

二. 初始化

int SeqLnit(Seqlist &L)
{
	L.length=0;//顺序表长度为0
	return 1;
}

三.插入 在第i个位置插入一个值x使长为n的线性表变为长为n+1的线性表
为了完成这个算法我们需要将第i至n共(n-i+1)个元素向后移动
步骤
1.查看当前表是否已满(健壮性)
2.输入是否有效 (插入位置是否有效)
3.插入元素,依次后移
4.长度+1

void int SeqLInsert(SeqList &L,int i,ElemType x)
{
	if(L.length==MAXSIZE) return error;
	if(i<1||i>L.lengeh+1) return error;
	for (int j=L.length-1;j>=i-1;j--)
	L.data[j+1]=L.data[j];
	L.data[i-1]=x;
	L.length++;
}

四.删除 线性表的删除是指将第i个元素删除使长度为你的线性表变为长度为n-1的线性表
需要将第i+1至n共(n-i)个元素前移
步骤
1.检查被删除元素的有效性
2.依次移动元素
3.长度减1

void int SeqLInsert(SeqList &L,int i)
{
	if(i<1||i>L.lengeh+1) return error;
	for (int j=i;j<=L.length-1;j++)
	L.data[j-1]=L.data[j];
	L.length--;
}

五.按值查找(顺序找)

 int SeqLInsert(SeqList L,ElemType x)
{
	int i=1;
	while (i<=L.length&&L.data[i-1]!=x)
	{
		i++;
	}
	if(i<=L.length) return i;
	else return 0;
}

六.两个有序顺序表的合并

void union(SeqList &LA,SeqList&LB)
{
	int m,n,j,k;
	m=LA.length;
	n=LB.length;
	k=m+n-1;//k表示结果线性表的工作指针(下标)
	i=m-1;j=n-1;//i,j分别为线性表LA和LB的工作指针(下标)
	while (i>=0&&j>=0)
	{
		if(LA.data[i]>=LB.data[j]) LA.data[k--]=LA.data[i--];
		else LA.data[k--]=LB.data[j--];
	}
	while (j>=0) LA.data[k--]=LB.data[j--];
	LA.length=m+n;
}

七.顺序表的逆置

void Seqinvert (SeqList &A)
{
	int i,j;ElemType t;
	for(i =0;j=L.length-1;i<j;i++,j--)
	{
		t=L.data[i];
		L.data[i]=L.data[j];
		L.data[j]=t;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值