顺序表的插入操作

这篇具有很好参考价值的文章主要介绍了顺序表的插入操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是顺序表,它的定义和特点有哪些。

如何实现顺序表的插入操作。

        定义一个顺序表

        定义insert函数

                判断顺序表是否已满

                插入位置的有效性

                开始插入操作

        主函数实现功能举例:

                为SequenceList L赋值

                打印顺序表

                调用insert函数传参实现插入操作

                打印插入后的顺序表

完整代码如下:

补充注意事项

错误写法:



什么是顺序表,它的定义和特点有哪些。

顺序表是一种线性数据结构,它由一组有序的数据元素组成。顺序表中的数据元素是按照一定顺序存储的,并且可以通过数据元素的位置来访问它们。

顺序表有以下几个特点:

  1. 顺序表的查找效率高,可以通过数组下标直接访问顺序表中的任意一个数据元素。

  2. 顺序表的插入和删除效率较低,因为这些操作需要移动大量的数据元素。

  3. 顺序表的空间利用率较低,因为顺序表的大小是固定的,如果空间不够用,就需要重新分配一块新的内存空间,将数据复制过去,这样就会浪费一些空间。

  4. 顺序表的内存空间是连续的,这样可以提高缓存命中率,从而提高访问效率。

总之,顺序表是一种简单且常用的线性数据结构,它的查找效率高,但是插入和删除效率较低,空间利用率较低。

如何实现顺序表的插入操作。

        定义一个顺序表

typedef struct {
    int data[MAX_SIZE];
    int length;
}SequenceList;

上述代码中的 typedef 声明了一个类型别名 SequenceList,用来表示一个结构体类型。这个结构体类型包含两个成员:一个整型数组 data 和一个整型变量 length

这样使用 typedef 声明后,就可以像使用系统定义的类型一样使用 SequenceList 类型,而不用再使用 struct 关键字。例如,可以直接声明一个 SequenceList 类型的变量,使用 typedef 声明类型别名的主要目的是为了使代码更加简洁,方便维护。

        定义insert函数

                判断顺序表是否已满

 if (L->length == MAX_SIZE){
        printf("Error: the SequenceList if full.\n");
        return;
    }

                插入位置的有效性

if(index < 0 || index > L->length){
            printf("Error index");
            return;
    }

                开始插入操作


        for (int i = L->length - 1; i >= index; i--){

         L->data[i+1] = L->data[i];
        }
        L->data[index] = element;
        L->length++;

将顺序表中插入位置及之后的数据元素向后移动一个位置,从而腾出插入位置。然后,将新的数据元素插入到插入位置,并将顺序表的长度加 1。这样,就完成了顺序表的插入操作。当i == index时,需要将index下标位置的元素向后移一位,这就是要写等于的原因.

        主函数实现功能举例:

                为SequenceList L赋值

SequenceList L = {{1,2,3,4,5,6},6};

有六个元素{1,2,3,4,5,6},length=6

                打印顺序表

 printf("Original sequence list length: %d and element: ",L.length);
    for (int i = 0; i < L.length; i++){
        printf("%d ", L.data[i]);
    }

                调用insert函数传参实现插入操作

 insert(&L,3,7);

在下表为3的位置上插入元素7

                打印插入后的顺序表

 printf("After insertion sequence list length: %d and element: ",L.length);
    
    for (int i = 0; i <L.length; i++){
        printf("%d ",L.data[i]);
    }

完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
    int data[MAX_SIZE];
    int length;
}SequenceList;
void insert(SequenceList *L,int index,int element){
    if (L->length == MAX_SIZE){
        printf("Error: the SequenceList if full.\n");
        return;
    }
    if(index < 0 || index > L->length){
            printf("Error index");
            return;
    }
        for (int i = L->length - 1; i >= index; i--){

         L->data[i+1] = L->data[i];
        }
        L->data[index] = element;
        L->length++;
}
int main(){
    SequenceList L = {{1,2,3,4,5,6},6};
    printf("Original sequence list length: %d and element: ",L.length);
    for (int i = 0; i < L.length; i++){
        printf("%d ", L.data[i]);
    }
    printf("\n");

    insert(&L,3,7);

    printf("After insertion sequence list length: %d and element: ",L.length);
    
    for (int i = 0; i <L.length; i++){
        printf("%d ",L.data[i]);
    }
    printf("\n");

    system("pause");
    return 0;
}

补充注意事项

在主函数中,L是一个结构体变量,不是指针。在访问它的成员时不能使用->运算符,会导致编译器报错。文章来源地址https://www.toymoban.com/news/detail-729120.html

错误写法:

int main(){
    sqlist L = {{1,2,3,4,5,6},6};
    printf("before insert length = %d,element:",L->length);
    for (int i = 0; i < L->length; i++)
    {
        printf("%d ",L->data[i]);
    }
    printf("\n");
    insert(&L,3,5);

    printf("after insert length = %d,element:",L->length);
    for (int i = 0; i < L->length; i++)
    {
        printf("%d ",L->data[i]);
    }
    printf("\n");
    
    system("pause");
    return 0;
}

到了这里,关于顺序表的插入操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构学习系列之顺序表的两种插入方式

    方式1: 在顺序表 末端插入 数据元素,代码如下: 示例代码: 注意事项: 1.形参传入到具有插入数据元素功能的函数后,需要做 入参合理性检查 ; 2.还需要判断此时 顺序表所存储的数据元素是否已满 ; 3.本示例代码中的 count是计数的变量 , 每次插入一个数据元素后,需

    2024年02月10日
    浏览(38)
  • 数据结构中: 一元多项式的运算(相加,相减,相乘)------用C语言 / C++来实现。 数据结构线性表的操作和应用(顺序存储)

    线性表的操作和应用(顺序存储)。用顺序存储实现一元多项式,并进行加、减、乘运算。 (1)一元多项式结构体创建  (2)初始化 (3)一元多项式赋值             (4)打印一元多项式 (5)加法运算                        (6)减法运算 (7)乘法运算    全部代

    2024年02月01日
    浏览(65)
  • 【数据结构】顺序表的定义和操作

    目录 1.初始化 2.插入 3.删除 4.查找 5.修改 6.长度 7.遍历 8.完整代码 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如需转载,请事先与我联系以获得授权⚠️。 🎁欢迎大家给我点赞👍、收藏⭐️

    2024年02月03日
    浏览(50)
  • 【数据结构】线性表的顺序存储结构及实现——C语言版

    线性表的顺序存储结构称为 顺序表 ,其基本思想是 用一段地址连续的存储单元一次存储线性表的数据元素。 设顺序表的每个元素占用 c 个存储单元,则第 i 个元素的存储地址为: 所以, 只要确定了存储顺序表的起始地址(即基地址),计算任意一个元素的存储地址的时间

    2024年03月15日
    浏览(54)
  • 数据结构之顺序表的实现(C语言版)

         Hello, 大家好,我是一代,今天给大家带来有关顺序表的有关知识      所属专栏:数据结构      创作不易,望得到各位佬们的互三呦 1.首先在讲顺序表之前我们先来了解什么是数据结构 数据结构是由“数据”和“结构”两词组合⽽来。 什么是数据?常见的数值1、

    2024年04月25日
    浏览(48)
  • C语言数据结构-----顺序表(多功能动态顺序表的代码实现)

    本篇讲述了顺序表的相关知识,以及动态顺序表的代码实现。 顺序表和链表一般情况下都会叫他们线性表。 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性

    2024年02月07日
    浏览(48)
  • 数据结构入门(C语言)顺序表的增删查改

    本章会用C语言来描述数据结构中的顺序表,实现简单的增删查改操作,其中头文件包含在新建的头文件SeqList.h内,顺序表的实现在新建的Seqlist.c内,主函数Text.c将会实现菜单,方便我们进行功能的选择。 顺序表是用一段物理地址 连续 的存储单元依次存储数据元素的线性结构

    2024年02月03日
    浏览(48)
  • 数据结构实验---顺序表的合并---链表的基本操作---重点解析约瑟夫问题

    实验的写法多种多样,但本文并未采用 #define 定义容量的写法,这样写已经是很老旧过时的写法。所有实验主体采用均为动态开辟,后续如果利用 C++ 来写或许会应用更多语法… 本篇展示数据结构的两个实验 其中,重点分析约瑟夫问题 实验中代码的命名风格等均与下方博客

    2024年02月16日
    浏览(62)
  • [C语言][数据结构][动态内存空间的开辟]顺序表的实现!

    目录 零.必备知识 a.顺序表的底层是数组. b.数组在内存中是连续存放的. c.动态内存空间的开辟(malloc,calloc,realloc). 一.顺序表的定义与实现          1.1 顺序表的定义          1.2 顺序表的初始化          1.3 顺序表的销毁          1.4 顺序表容量的检查与调整

    2024年04月09日
    浏览(88)
  • 数据结构 线性表的定义和基本操作(以顺序表为例)

    名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN) (一个喜欢古诗词和编程的Coder😊) 以下代码个人分享出来,仅供学习交流,且仅在CSDN平台发布,未经授权禁止二次转发。 〇、线性表是什么? 1、定义 线性表 是具有 相同数据类型 的 n(

    2024年02月12日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包