附:线性表顺序存储结构的九个基本操作

.h文件

#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef int ElemType;

typedef struct{
	ElemType elem[MaxSize];
	int length; 
}SqList; 

//初始化 
void InitList(SqList &L) 
{
	L.length=0;
}

//清空
void ClearList(SqList &L)
{
	L.length=0;
}

//判断是否为空 
bool ListEmpty(SqList L)
{
	return (L.length==0);
}
  
//求长度 
int ListLength(SqList L)
{
	return L.length;
}

//输出线性表 
void DispList(SqList L)
{
	for(int i=0;i<L.length;i++)
		printf("%4d",L.elem[i]);
		printf("\n");
}

//求数据元素值 
bool GetElem(SqList L,int i,ElemType &e){
	if(i<1||i>L.length)
	return false;
	e=L.elem[i-1];
	return true;
}

//按值查找元素 
int LocateElem(SqList L,ElemType e)
{
	for(int i=0;i<=L.length;i++)
	{
		if(L.elem[i]==e)
		return i+1;
	}
	return 0;
}

// 插入数据元素
bool ListInsert(SqList &L,int i,ElemType e) 
{
	if(L.length==MaxSize)
	return false;
	if(i<1||i>L.length+1)
	return false;
	i--;
	for(int j=L.length;j>=i;j--)
	L.elem[j]=L.elem[j-1];
	L.elem[i]=e;
	L.length++;
	return true;
	
}

//整体创建
void Createlist(SqList &L,ElemType a[],int n)
{
	int i;
	for(i=0;i<n;i++)
	L.elem[i]=a[i];
	L.length=n;
 } 

//删除线性表
bool ListDelete(SqList &L,int i)
{
	if(i<1||i>L.length)
	return false;
	for(int j=i;j<L.length;j++)
	L.elem[j-1]=L.elem[j];
	L.length--;
	return true;
 } 

//并集
void Merge(SqList &LA,SqList &LB){
	ElemType x;
	int i,k;
	for(i=0;i<LB.length;i++)
	{
		x=LB.elem[i];
		k=LocateElem(LA,x);
		if(k==0)
		{
			ListInsert(LA,LA.length,x);
			LA.length++;
		}
	}
} 


 .cpp文件验证是否正确

#include"SqList.h"
int main(){
	SqList L;
	printf("(1)初始化线性表\n");
	InitList(L);
	/*printf("(2)依次插入5个数\n");
	ListInsert(L,1,8);
	ListInsert(L,2,10);
	ListInsert(L,3,12);
	ListInsert(L,4,16);
	ListInsert(L,5,18); */
	int a[]={8,10,12,16,18};
	Createlist(L,a,5);
	printf("(3)输出线性表:\n");
	DispList(L);	
	printf("(4)表长度为:%d\n",ListLength(L));
	printf("(5)判断表为%s\n",ListEmpty(L)?"空":"非空");
	int e;
	GetElem(L,5,e);
	printf("(6)第5个元素为%d\n",e);
	printf("(7)输出元素16的位置为:%d\n",LocateElem(L,16));
	ListInsert(L,5,14);
	printf("(8)在第5个元素的位置插入14这个元素\n");
	printf("(9)输出表");
	DispList(L);	
	printf("(10)删除第5个元素\n");
	ListDelete(L,5);
	printf("(11)输出表");
	DispList(L);	
	printf("(12)清空表\n");
	ClearList(L);
	printf("(13)判断是否为空\n");
	printf("表为%s\n",ListEmpty(L)?"空":"非空"); 
	 
}

运行结果:

(1)初始化线性表
(3)输出线性表:
   8  10  12  16  18
(4)表长度为:5
(5)判断表为非空
(6)第5个元素为18
(7)输出元素16的位置为:4
(8)在第5个元素的位置插入14这个元素
(9)输出表   8  10  12  16  14  18
(10)删除第5个元素
(11)输出表   8  10  12  16  18
(12)清空表
(13)判断是否为空
表为空

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值