栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2023王道C语言督学营(线性表-线性表的顺序存储原理及实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2023王道C语言督学营(线性表-线性表的顺序存储原理及实现)

线性表是逻辑结构,独立于存储结构

线性表是逻辑结构,它表示元素有一对一的相邻关系
顺序表和链表是存储结构

线性表的顺序存储


头文件

#include 
#include 
#include 
#include 
 
#define MaxSize 10
顺序表的定义
//顺序表定义
typedef struct {
	
	int data[MaxSize];//存放顺序表元素的数组
	int length;//顺序表的长度 
//	int size;//顺序表的大小,感觉没必要	


初始化顺序表[initSqlist()]

//初始化顺序表 
void initSqlist(Sqlist &sqlist){
	    sqlist.length=0;
	    printf("初始化完成,初始单链表长度为%dn",sqlist.length);
   
}

求表长[Length()]

//求表长
void Length(Sqlist l){
    printf("表长为%dn",l.length);
元素插入[ListInsert()]
bool ListInsert(Sqlist &sq,int l,int e){
	if(l<1||l>sq.length+1){
		printf("插入位置不合法");
	    return false;
	}
	if(sq.length>=MaxSize){
		printf("存储空间不足");
		return false;
	}
	for (int i=sq.length;i>=l;i--){	
		sq.data[i]=sq.data[i-1];
	}
	sq.data[l-1]=e;
	sq.length++;
	printf("插入成功,插入数据为%dn",e); 
	return true;
}
元素删除[ListDelete()]
//删除操作 
bool ListDelete(Sqlist &sq,int i,int &e){
	//先判断删除是否合法
	if(i<1||i>sq.length+1){
		printf("删除位置不合法");
		return false; 
	} 
	e=sq.data[i-1];
	for(int j=i-1;j<=sq.length;j++){
		sq.data[j-1]=sq.data[j];
	}
	sq.length--;
	printf("删除成功,删除元素为%dn",e);
	return true; 
}
元素查找[LocateElem()&&GetElem()]
//按值查找 
void LocateElem(Sqlist sq,int e){
	int flag=-1;
	for(int j=0;j
		if(sq.data[j]==e){
			flag=j;
			break; 
		}
	}
	if(flag!=-1){
		 printf("查找成功,在data[%d]上n",flag);
	}else{
		printf("查找失败"); 
	}
	  
	
}
//按位操作 
void GetElem(Sqlist sq,int i){
    if(i<1||i>sq.length+1){
		printf("查找位置不合法");
	    
	}else{
		printf("data[%d]上的数值为%d",i,sq.data[i-1]);
	}
	
}

打印顺序表[PrintList()]

//输出操作 
void PrintList(Sqlist sq){
		for(int i=0;i
		printf("data[%d]=%d  ",i,sq.data[i]);
	}
}

主函数
int main(){
	Sqlist list1;
	initSqlist(list1);//初始化 
    ListInsert(list1,1,1);	//插入操作    
    ListInsert(list1,2,2);	//插入操作  
    ListInsert(list1,3,3);	//插入操作  
    ListInsert(list1,4,4);	//插入操作  
    ListInsert(list1,5,5);	//插入操作  
    
	PrintList(list1); //输出表 
	Length(list1);//求表长
	int e=0;
	ListDelete(list1,2,e); 
	PrintList(list1); //输出表 
        Length(list1);//求表长
	LocateElem(list1,2);//按值查找 
	GetElem(list1,3);//按位置查找 
}

输出结果

动态分配的数组依旧属于顺序存储结构

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号