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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 408_数据结构_顺序表_Day6 -> 正文阅读

[数据结构与算法]408_数据结构_顺序表_Day6

相关知识

线性表在物理结构上可以分为:顺序存储结构和链表存储结构,前者是随机存取的存储结构,后者是顺序存取的存储结构。

插入数据

  • 哪个顺序表上的哪个位置插入哪个数据值
  • bool InsertList (SqList &L, int loca, ElemType dat)
  • 因为要修改顺序表,所以用引用
  • ret = InsertList (L, 2, 20);
  • 顺序表中已经存满了时,不可以插入
  • 时间复杂度:最好:O(1); 最坏:O(n); 平均:O(n)
#include<stdio.h>
#include<stdlib.h>

#define MaxSize 50
typedef int ElemType;

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

bool InsertList(SqList &L,int loca,ElemType dat)
{
	if(loca < 1 || loca >L.length+1)
		return false;
	if(L.length > MaxSize)
		return false;
	for(int j=L.length;j>=loca;j--)
	{
		L.data[j]=L.data[j-1];
	}
	L.data[loca-1]=dat;
	L.length++;
	return true;
}
void PrintList(SqList L)
{
	for(int i=0;i<L.length;i++)
	{
		printf("L.data[%d]=%d\n",i,L.data[i]);
	}
}
int main(){
	SqList L;
	L.data[0]=1;
	L.data[1]=10;
	L.data[2]=100;
	L.length=3;
	
	bool ret;
	ret=InsertList(L,2,20);
	if(ret)
	{
		printf("插入成功\n");
		PrintList(L); 
	}
	else
	{
		printf("插入失败\n");
	}
	
}

在这里插入图片描述

删除数据

  • 哪个顺序表哪个位置删除数据,返回删除的数据值
  • bool DeleteList(SqList &L,int loca,ElemType &dele)
  • 因为要修改顺序表,所以用引用;因为要修改变量的值,所以用引用
  • ret = DeleteList (L, 1, del);
  • 顺序表中没有元素时,不可以删除
  • 时间复杂度:最好:O(1); 最坏:O(n); 平均:O(n)
#include<stdio.h>
#include<stdlib.h>

#define MaxSize 50
typedef int ElemType;

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

bool DeleteList(SqList &L,int loca,ElemType &dele)
{
	if(loca < 1 || loca >L.length)
		return false;
	if(L.length == 0)
		return false;
	dele=L.data[loca-1];
	for(int j=loca-1;j<L.length-1;j++)
	{
		L.data[j]=L.data[j+1];
	}
	L.length--;
	return true;
}
void PrintList(SqList L)
{
	for(int i=0;i<L.length;i++)
	{
		printf("L.data[%d]=%d\n",i,L.data[i]);
	}
}
int main(){
	SqList L;
	L.data[0]=1;
	L.data[1]=10;
	L.data[2]=100;
	L.length=3;
	
	ElemType del;
	bool ret;
	ret=DeleteList(L,1,del);
	if(ret)
	{
		printf("删除成功\n");
		printf("删除的数据为:%d\n",del);
		PrintList(L);	
	}
	else
	{
		printf("删除失败\n");
	}
}

在这里插入图片描述

修改元素

  • 哪个数据修改哪个顺序表哪个位置的数据值,返回修改之前的值
  • bool AlterList (SqList &L,int loca,ElemType after,ElemType &before)
  • 因为要修改顺序表,所以用引用;因为要修改变量的值,所以用引用
  • ret = AlterList (L, 1, after, before);
#include<stdio.h>
#include<stdlib.h>

#define MaxSize 50
typedef int ElemType;

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


bool AlterList(SqList &L,int loca,ElemType after,ElemType &before)
{
	if(loca < 1 || loca >L.length)
		return false;
	before=L.data[loca-1];
	L.data[loca-1]=after;
	return true;
}
void PrintList(SqList L)
{
	for(int i=0;i<L.length;i++)
	{
		printf("L.data[%d]=%d\n",i,L.data[i]);
	}
}
int main(){
	SqList L;
	L.data[0]=1;
	L.data[1]=10;
	L.data[2]=100;
	L.length=3;
	
	ElemType before;
	ElemType after=88;
	bool ret;
	ret=AlterList(L,1,after,before);
	if(ret)
	{
		printf("修改成功\n");
		printf("修改前的数据为:%d\n",before);
		PrintList(L);	
	}
	else
	{
		printf("修改失败\n");
	}
}

在这里插入图片描述

查找元素

  • 哪个顺序表查找哪个数据值,返回数据值的位置
  • bool FindList (SqList &L,ElemType dat,int &loca)
  • 因为要修改顺序表,所以用引用;因为要修改变量的值,所以用引用
  • ret = FindList (L, 10, loca);
#include<stdio.h>
#include<stdlib.h>

#define MaxSize 50
typedef int ElemType;

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

bool FindList(SqList &L,ElemType dat,int &loca)
{
	int i;
	for(i=0;i<L.length;i++)
	{
		if(L.data[i] == dat)
		{
			loca=i+1;
			return true;
		}
	}
	return false;
}
void PrintList(SqList L)
{
	for(int i=0;i<L.length;i++)
	{
		printf("L.data[%d]=%d\n",i,L.data[i]);
	}
}
int main(){
	SqList L;
	L.data[0]=1;
	L.data[1]=10;
	L.data[2]=100;
	L.length=3;
	
	ElemType dat;
	int loca;
	bool ret;
	ret=FindList(L,10,loca);
	if(ret)
	{
		printf("查找成功\n");
		printf("第一次出现的位置为:%d\n",loca);
	}
	else
	{
		printf("查找失败\n");
	}
}

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:49:54  更:2022-03-22 20:52:13 
 
开发: 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 11:31:49-

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