IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 线性表的顺序存储结构(C语言讲解) -> 正文阅读

[数据结构与算法]线性表的顺序存储结构(C语言讲解)

1.顺序存储结构定义

**

线性表的顺序存储结构,指的是用一段地址连续的存储单元以此存储线性表的数据元素
这里的元素可能包括多组数据
**

线性表顺序储存的结构代码

#define max 10//数组长度 
typedef int Elemtype;//Elemtype根据实际情况而定,这里为int
typedef struct list //创建顺序存储结构 
{
	Elemtype date[max];
	int len;//线性表当前长度
 };

数组长度与线性表的长度的区别

线性表的长度是线性表中数据元素的个数,
数组的长度是存放线性表的存储空间的大小
**注:**只有当数组长度>线性表的长度时才可以向线性表中插入元素
所以在任意时刻数组长度应大于线性表的长度

2.顺序存储结构获得元素操作

int getElem(list L,int i,Elemtype x) //获得元素操作 ,L为线性表,i为线性表第i个元素,将值传给x 
 {
 	if(L.len==0||i<1||i>L.len) 
 	return 0;
 	else
 	{
 		x=L.date[i-1];
 		return x;//x即为需要获取的元素
	 } 
 }

3.顺序存储结构插入操作

int listinsert(list*L,int i,Elemtype e)//在线性表L中第i个位置之前插入新的数据元素e,L++ 
 {
 	int t;
 	if(L->len==max||i<1||i>L->len)
 	return 0;
 	if(i<=L->len)
 	{
 		for(t=L->len-1;t>=i-1;t--)
 		{
 			L->date[t+1]=L->date[t];//将插入元素位置后的元素向后移一位
		 }
		 L->date[i-1]=e;
		 L->len++;//线性表长度+1
	 }
 }

4.顺序存储结构删除操作

int listdelete(list*L,int i,int*x)
 {
 	int t;
 	if(L->len==0||i<1||i>L->len) 
 	return 0;
 	*x=L->date[i-1];
 	if(i<L->len)
 	{
 		for(t=i;t<L->len;t++)
 		{
 			L->date[t-1]=L->date[t];
		 }
		 L->len--;
	 }
	 return 1;
  } 

5.完整代码举例

#include<stdio.h>

#include <typeinfo>

#define max 10//数组长度 

typedef int Elemtype;//Elemtype根据实际情况而定,这里为int

typedef struct list //创建顺序存储结构 
{
	Elemtype date[max];
	
	int len;//线性表当前元素 
 };
 int getElem(list L,int i,Elemtype x) //获得元素操作 ,L为线性表,i为线性表第i个元素,将值传给x 
 
 {
 	if(L.len==0||i<1||i>L.len) 
 	
 	return 0;
 	else
 	{
 		x=L.date[i-1];
 		
 		return x;
	 } 
 }
 int listinsert(list*L,int i,Elemtype e)//在线性表L中第i个位置之前插入新的数据元素e,L++ 
 {
 	int t;
 	
 	if(L->len==max||i<1||i>L->len)
 	
 	return 0;
 	
 	if(i<=L->len)
 	{
 		for(t=L->len-1;t>=i-1;t--)
 		{
 			L->date[t+1]=L->date[t];
		 }
		 L->date[i-1]=e;
		 
		 L->len++;
	 }
 }
 int listdelete(list*L,int i,int*x)
 {
 	int t;
 	
 	if(L->len==0||i<1||i>L->len) 
 	
 	return 0;
 	
 	*x=L->date[i-1];
 	
 	if(i<L->len)
 	{
 		for(t=i;t<L->len;t++)
 		{
 			L->date[t-1]=L->date[t];
		 }
		 L->len--;
	 }
	 return 1;
  } 
int main()
{
	list L;
	
	L.date[2]=3;//定义数组的第三个元素 
	
	L.len=3;//此时的线性表长度 
	
	int x;
	printf("%d\n",getElem(L,3,x) );// 获得线性表第三个数据 
	
    listinsert(&L, 3, 9);
    
	printf("%d\n",getElem(L,3,x) );// 获得插入后线性表第三个数据 
	
	 listdelete(&L,3,&x);
	 
	printf("%d\n",getElem(L,3,x) );//获得删除后线性表的第三个数据 
 } 

以下为运行结果
在这里插入图片描述
**

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:49:07  更:2021-11-09 19:51:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:33:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码