C语言实现顺序表详解

### 文章目录

  • [@[TOC]](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [1.前言🙋🏼‍♂️](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [2.顺序表🧣](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [2.1 顺序表概念🧣](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [2.2 顺序表特点🧣](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [2.2 顺序表作用🧣](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.顺序表基操🧤](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.1 结构体初始化🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.2 顺序表初始化🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.3 顺序表创建🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.4 顺序表打印🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.5 顺序表插入🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.6 顺序表删除🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.7 顺序表查找🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [3.8 顺序表修改🎉](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)
  • [4. 总结](#文章目录 @[TOC] 1.前言🙋🏼‍♂️ 2.顺序表🧣 2.1 顺序表概念🧣 2.2 顺序表特点🧣 2.2 顺序表作用🧣 3.顺序表基操🧤 3.1 结构体初始化🎉 3.2 顺序表初始化🎉 3.3 顺序表创建🎉 3.4 顺序表打印🎉 3.5 顺序表插入🎉 3.6 顺序表删除🎉 3.7 顺序表查找🎉 3.8 顺序表修改🎉 4. 总结)

1.前言🙋🏼‍♂️

C语言想学好,链表和顺序表都跑不了.

2.顺序表🧣

2.1 顺序表概念🧣

顺序表是C语言中一种常用的数据结构,用于存储一组具有相同类型的元素。顺序表是一种线性表,即元素之间存在顺序关系,可以通过下标访问元素。

2.2 顺序表特点🧣

顺序表可以采用数组来实现,也可以使用动态内存分配来实现。无论采用哪种实现方式,顺序表都具有以下特点:

  • 1. 随机访问:顺序表中的元素可以通过下标直接访问,具有O(1)的时间复杂度。

  • 2. 内存连续:顺序表中的元素在内存中是连续存储的,这样可以有效利用计算机的缓存机制,提高访问效率。

  • 3. 固定大小:使用数组实现的顺序表的大小是固定的,无法动态扩容或缩容。使用动态内存分配实现的顺序表可以动态调整大小。

  • 4. 插入删除效率低:在顺序表的中间位置插入或删除元素需要移动后续元素,时间复杂度为O(n)。

2.2 顺序表作用🧣

在C语言中,可以通过定义结构体来表示顺序表,结构体中包含一个指向元素数组的指针,以及其他与顺序表相关的属性,例如当前元素个数和最大容量等。使用结构体可以更方便地管理和操作顺序表。

3.顺序表基操🧤

3.1 结构体初始化🎉

c 复制代码
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;

typedef struct{
	ElemType data[MAXSIZE]; 
	ElemType length;
}sqlList;

sqlList *L;

3.2 顺序表初始化🎉

c 复制代码
//初始化表
void initTable(sqlList	*L){
	printf("initTable:\n");
	L->length = 0;
} 

3.3 顺序表创建🎉

c 复制代码
//创建表
void createTable(sqlList *L,ElemType number){
	printf("createTable:\n");
	int i;
	printf("请输入%d个数据:\n",number);
	
	if(L->length>MAXSIZE){
		printf("顺序表已满");
	}
	
	for(i=0;i<number;i++){
		scanf("%d",&L->data[i]);
	}
	L->length = i;
	
} 

3.4 顺序表打印🎉


c 复制代码
//显示表
void showTable(sqlList	*L){
	printf("showTable:\n"); 
	int i;
	for(i=0;i<L->length;i++){
		printf("%d ",L->data[i]);
	}
} 

3.5 顺序表插入🎉

c 复制代码
void insertTable(sqlList *L,ElemType pos,ElemType val){
	printf("\ninserTable:\n");
	int i;
	if(L->length<MAXSIZE){
		for(i=L->length-1;i>=pos-1;i--){
			L->data[i+1] = L->data[i];
		}
		L->data[pos-1] = val;
		L->length++;
	}else{
		printf("顺序表长度已满\n");
	}
} 

3.6 顺序表删除🎉

c 复制代码
void deleteTable(sqlList *L,ElemType x){
	printf("\n deleteTable: \n");
	int i,j;
	for(i=0;i<L->length;i++){
		if(L->data[i] == x){
			for(j=i;j<L->length;j++){
				L->data[j] =L->data[j+1];
			}
		L->length--;
		}
	}
} 

3.7 顺序表查找🎉

c 复制代码
//查找元素 
int queryTable(sqlList *L,ElemType x){
	printf("\nqueryTable:\n");
	int i,res;
	i=0;
	while(i<L->length && L->data[i] !=x)
		i++;
	if(i>=L->length) 
		return 0;
	else 	
		return i+1;
} 

3.8 顺序表修改🎉

c 复制代码
//修改元素
void updateTable(sqlList *L,ElemType findNuber,ElemType alterNuber){
	int res = queryTable(L,findNuber);
	int i;
	L->data[res-1] = alterNuber;
	printf("\nres = %d\n",res);
} 

以下是顺序表的C语言代码(全部):

c 复制代码
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;

typedef struct{
	ElemType data[MAXSIZE];
	ElemType length;
}sqlList;

sqlList *L;

//初始化表
void initTable(sqlList	*L){
	printf("initTable:\n");
	L->length = 0;
} 

//创建表
void createTable(sqlList *L,ElemType number){
	printf("createTable:\n");
	int i;
	printf("请输入%d个数据:\n",number);
	
	if(L->length>MAXSIZE){
		printf("顺序表已满");
	}
	
	for(i=0;i<number;i++){
		scanf("%d",&L->data[i]);
	}
	L->length = i;
	
} 

//显示表
void showTable(sqlList	*L){
	printf("showTable:\n"); 
	int i;
	for(i=0;i<L->length;i++){
		printf("%d ",L->data[i]);
	}
} 


//插入一个数据
void insertTable(sqlList *L,ElemType pos,ElemType val){
	printf("\ninserTable:\n");
	int i;
	if(L->length<MAXSIZE){
		for(i=L->length-1;i>=pos-1;i--){
			L->data[i+1] = L->data[i];
		}
		L->data[pos-1] = val;
		L->length++;
	}else{
		printf("顺序表长度已满\n");
	}
} 


//删除一个元素
void deleteTable(sqlList *L,ElemType x){
	printf("\n deleteTable: \n");
	int i,j;
	for(i=0;i<L->length;i++){
		if(L->data[i] == x){
			for(j=i;j<L->length;j++){
				L->data[j] =L->data[j+1];
			}
		L->length--;
		}
	}
} 


//查找元素 
int queryTable(sqlList *L,ElemType x){
	printf("\nqueryTable:\n");
	int i,res;
	i=0;
	while(i<L->length && L->data[i] !=x)
		i++;
	if(i>=L->length) return 0;
	else 			return i+1;
} 






//修改元素
void updateTable(sqlList *L,ElemType findNuber,ElemType alterNuber){
	int res = queryTable(L,findNuber);
	int i;
	L->data[res-1] = alterNuber;
	printf("\nres = %d\n",res);
} 

main()
{
	initTable(&L);	
	createTable(&L,5);
	showTable(&L);
	insertTable(&L,3,60);
	showTable(&L);
	deleteTable(&L,60);
	showTable(&L);
	printf("下标:%d\n",queryTable(&L,20));
	updateTable(&L,20,90);
	showTable(&L);
}

以上代码演示了如何初始化、插入和删除元素,并打印顺序表的函数。代码中使用了一个结构体`sqlList `来表示顺序表,`data`数组存储元素,`length`记录当前元素个数。

顺序表的操作还包括查找指定位置的元素、查找指定值的元素、判断是否为空表等,以上代码仅是一个简单示例。在实际应用中,可以根据具体需求来扩展顺序表的功能,不过实际的开发和这个也差的不是很多,如果这个你能看懂,就基本上没有太大问题了

4. 总结

这里的顺序表对应着实际开发中的增、删、改、查,难度其实不大,主要是希望各位道友学会和学懂,然后多多支持一下小猿


++some people are worth melting for. 🎀++

相关推荐
IT 古月方源3 分钟前
关于高级acl的配置和讲解
运维·开发语言·网络·tcp/ip·智能路由器
半盏茶香8 分钟前
C语言勘破之路-最终篇 —— 预处理(上)
c语言·开发语言·数据结构·c++·算法
java1234_小锋12 分钟前
MyBatis的核心组件有哪些?
java·开发语言
2401_8582861115 分钟前
118.【C语言】数据结构之排序(堆排序和冒泡排序)
c语言·数据结构·算法
不听话的好孩子20 分钟前
基于深度学习(HyperLPR3框架)的中文车牌识别系统-python程序开发测试
开发语言·python·深度学习
阿松のblog23 分钟前
pyQt5实现目标检测可视化001
开发语言·qt·目标检测
zyx没烦恼26 分钟前
【C++11】包装器
开发语言·c++
No regret.36 分钟前
JVM内存模型、垃圾回收机制及简单调优方式
java·开发语言·jvm
bear_7940 分钟前
Go操作MySQL
开发语言·go
明月看潮生42 分钟前
青少年编程与数学 02-004 Go语言Web编程 21课题、应用部署
开发语言·青少年编程·应用部署·编程与数学·goweb