数据结构——线性表(顺序表的增、删、查)

本文介绍了线性表的顺序存储结构,包括静态和动态分配方式。顺序表在逻辑上相邻的元素物理位置相邻,增删操作可能涉及数据元素的移动,但支持随机访问。静态分配的数组大小固定,而动态分配可在空间占满时扩展。文章还列举了初始化、插入、删除、查找等基本操作的定义。
摘要由CSDN通过智能技术生成

-------顺序表介绍-------
线性表的顺序存储又称顺序表; 用一组地址连续的存储单元(数组)依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。一维数组可以静态分配,也可以动态分配。关于静态分配,数组的大小空间事先固定,空间占满,加入新数据就会溢出。动态分配,存储空间通过执行程序中的动态分配存储语句实现,一旦数据空间占满,就另外开辟一块更大的存储空间,用来替换原来的存储空间,从而达到扩充存储的目的。
特点: 增删操作需移动大量数据元素; 支持随机存取。
-----------定义----------
【静态分配】
#define MaxSize 100 //线性表最大长度
typedf struct SqList{
Elemtype data[MaxSize]; //数据域
int length; //顺序表的长度
}SqList;
【动态分配】
#define InitSize 100 //表长度初始定义
typedf struct SqList{
Elemtype *data //指示动态分配数组的指针
int MaxSize,length; //数组的最大容量和长度
}SeqList;
-------基本操作-------
InitSqList(&L); //初始化
InsertList(&L,int i,ElemType e); //在位序为i的位置插入元素e
DeleteList(&L,int i,&e); //删除位序i处的数据元素,并用e记录被删的元素值
GetElement(L,i); //查找位序i处的数据元素值
LocateElement(L,e); //查找数据元素值为e所在的位置
Length(L); //顺序表长度
PrintList(L); //输出操作
--------实现---------
【静态分配】

//顺序表——静态分配
#include <stdio.h>
#define MaxSize 100
typedef struct {
   
	int data[MaxSize];
	int length;
} SqList;

bool InitSqList(SqList &L) {
   
	for(int i=0; i<L.length; i++) {
   
		L.data[i]=0;
	}
	L.length=0;
	return true;
}
bool InsertList(SqList &L) {
   
	int i;
	//创建也属于插入操作这里请从位序1处开始插入
	printf("请输入要插入元素的位序:\n");
	scanf("%d",&i);
	while(i!=9999) {
   
		if(L.length==MaxSize) return false;
		if(i<1||i>L.length+1) {
   
			printf("待插入位置违法!!!\n\n");
			return false;
		}
		int e;
		printf("请输入要插入的元素值:\n");
		scanf("%d",&e);
		//插入位置的往后元素均后移
		for(int j=L.length; j>=i; j--) {
   
			L.data[j]=L.data[j-1];
		}
		L.data[i-1]=e;
		L.length++;
		printf("请输入要插入元素的位序:\n");
		scanf("%d",&i);
	}
	return true;
}
bool DeleteList(SqList &L,int &e
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值