当前位置: 首页 > wzjs >正文

房产信息网站模板北京科技网站制作

房产信息网站模板,北京科技网站制作,网站建设的基本流程包括哪些,中国沙漠建设 志愿者 兵团官方网站C 语言实现顺序表的基本操作(入门教程) 1. 引言 顺序表(Sequential List)是一种 线性表 的存储结构,它使用 一段连续的内存空间 来存储数据。由于存储位置是连续的,顺序表支持 快速读取,但 插入…

C 语言实现顺序表的基本操作(入门教程)

在这里插入图片描述

1. 引言

顺序表(Sequential List)是一种 线性表 的存储结构,它使用 一段连续的内存空间 来存储数据。由于存储位置是连续的,顺序表支持 快速读取,但 插入和删除操作 可能涉及大量的数据移动,因此性能相对较低。本文将详细介绍 C 语言 下顺序表的基本操作,并提供完整的代码示例,供初学者学习。


2. 顺序表的基本概念

顺序表是 数组 在逻辑上的扩展,包含:

  • 数据存储区(数组 data[]):用于存放元素。
  • 长度标记(变量 length):记录当前顺序表的元素个数。

顺序表的特点

支持随机访问,即可以使用 O(1) 时间访问指定元素。
插入/删除操作复杂,需要移动大量元素,最坏情况时间复杂度为 O(n)


3. 顺序表的基本操作

接下来,我们使用 C 语言实现以下基本功能:

  1. 初始化顺序表
  2. 插入元素
  3. 删除元素
  4. 查找元素
  5. 打印顺序表

4. C 语言实现顺序表

#include <stdio.h>
#include <stdlib.h>#define MaxSize 50  // 顺序表的最大容量typedef int ElemType;  // 定义数据类型// 定义顺序表结构
typedef struct {ElemType data[MaxSize];  // 存储数据的数组int length;  // 记录顺序表当前的长度
} SqList;// 1. 初始化顺序表
void InitList(SqList *L) {L->length = 0;  // 初始长度为 0
}// 2. 插入元素
int Insert(SqList *L, int i, ElemType e) {if (i < 1 || i > L->length + 1) {  // 检查插入位置是否合法printf("插入位置不合法!\n");return 0;}if (L->length == MaxSize) {  // 顺序表已满printf("顺序表已满,无法插入!\n");return 0;}for (int j = L->length; j >= i; j--) {  // 从最后一个元素开始向后移动L->data[j] = L->data[j - 1];}L->data[i - 1] = e;  // 插入元素L->length++;  // 表长加 1return 1;
}// 3. 删除元素
int Delete(SqList *L, int i, ElemType *e) {if (i < 1 || i > L->length) {  // 检查删除位置是否合法printf("删除位置不合法!\n");return 0;}*e = L->data[i - 1];  // 取出被删除的元素for (int j = i; j < L->length; j++) {  // 从删除位置开始,后续元素前移L->data[j - 1] = L->data[j];}L->length--;  // 表长减 1return 1;
}// 4. 查找元素
int LocateElem(SqList L, ElemType x) {for (int i = 0; i < L.length; i++) {if (L.data[i] == x) {return i + 1;  // 返回逻辑位置(从 1 开始)}}return 0;  // 查找失败返回 0
}// 5. 打印顺序表
void PrintList(SqList L) {printf("顺序表当前元素:");for (int i = 0; i < L.length; i++) {printf("%d ", L.data[i]);}printf("\n");
}// 主函数
int main() {SqList L;InitList(&L);  // 初始化顺序表// 插入一些数据Insert(&L, 1, 10);Insert(&L, 2, 20);Insert(&L, 3, 30);Insert(&L, 4, 40);PrintList(L);  // 输出:10 20 30 40// 在第二个位置插入 15Insert(&L, 2, 15);PrintList(L);  // 输出:10 15 20 30 40// 删除第三个元素ElemType e;Delete(&L, 3, &e);printf("删除的元素是:%d\n", e);PrintList(L);  // 输出:10 15 30 40// 查找元素int pos = LocateElem(L, 30);if (pos) {printf("元素 30 位于顺序表的第 %d 位置。\n", pos);} else {printf("元素 30 不在顺序表中。\n");}return 0;
}

5. 运行结果

顺序表当前元素:10 20 30 40 
顺序表当前元素:10 15 20 30 40 
删除的元素是:20
顺序表当前元素:10 15 30 40 
元素 30 位于顺序表的第 3 位置。

6. 代码讲解

1️⃣ 初始化顺序表

void InitList(SqList *L) {L->length = 0;  // 初始长度为 0
}
  • 这里的 SqList *L 代表传入 顺序表的指针,让函数可以直接修改结构体内容。

2️⃣ 插入操作

int Insert(SqList *L, int i, ElemType e) {if (i < 1 || i > L->length + 1) {  printf("插入位置不合法!\n");return 0;}if (L->length == MaxSize) {  printf("顺序表已满,无法插入!\n");return 0;}for (int j = L->length; j >= i; j--) {  L->data[j] = L->data[j - 1];  }L->data[i - 1] = e;  L->length++;  return 1;
}
  • 检查插入位置是否合法,防止越界。
  • 移动元素,确保插入元素后顺序不变。
  • 更新 length,插入完成后 表长+1

3️⃣ 删除操作

int Delete(SqList *L, int i, ElemType *e) {if (i < 1 || i > L->length) {  printf("删除位置不合法!\n");return 0;}*e = L->data[i - 1];  for (int j = i; j < L->length; j++) {  L->data[j - 1] = L->data[j];  }L->length--;  return 1;
}
  • 保存被删除的元素,避免数据丢失。
  • 移动元素,确保删除后顺序不变。
  • 更新 length,删除完成后 表长-1

7. 总结

本文介绍了 C 语言实现顺序表 的基本操作,包括 插入、删除、查找和打印
✅ 适合小白学习,理解顺序表的原理和实现方式。
⚠️ 需要注意 数据移动的影响,避免数组越界错误。

➡️ 顺序表适用于需要 快速访问 但插入删除较少的场景。如果需要频繁插入/删除数据,建议使用 链表 代替。💡

http://www.dtcms.com/wzjs/807424.html

相关文章:

  • 常州h5网站建设深圳北站设计者
  • 短链接转换网站网站被降权会发生什么
  • 贵阳专业网站制作play字体WordPress
  • 新乡手机网站建设哪家好如何制作公司网站
  • 怎么做公司的网站常州网站建设方案
  • 做网站界面用的软件百度贴吧官网首页
  • 国内flash网站合肥seo服务商
  • 苏州住房和城乡建设局网站九江百度公司
  • 郑州模板建站哪家好中英双板网站模版
  • 网站建设视频教程。从珠海回来都变黄码了
  • 网站绑定微信公众号定制开发一般多少钱
  • ps建设此网站的必要与可行性梵克雅宝耳钉
  • 保定网站制作软件cms系统设计
  • seo网站外链工具绍兴网站建设技术外包
  • 网站如何做单项链接python基础教程文档
  • 网站 备案wordpress relocate
  • 张家港建设工程质量监督站网站网站简介模板
  • 桐庐网站建设微信小程序模板源码
  • 东莞住建局官方网站阿里巴巴做网站联系人
  • 寿光公司做网站网站下模板做网站犯法
  • 钦北区网站建设哈尔滨网络搭建
  • 谷歌没收录网站主页 301重定向石家庄网站建设方案推广
  • 网站开发公司人员配备互联网都有哪些公司
  • 涿州市网站建设加强人社网站建设
  • 公司网站建设亚运村上海seo推广价格
  • 生态农业网站建设方案做电影网站选服务器
  • 青岛做网站价格电影网站做cpa
  • 网站维护 html企业网站建设方案机构
  • 青岛哪家网站建设好百度平台商家联系方式
  • 哈尔滨的网站设计wordpress 单栏模板下载