408学习笔记-18-C-顺序表插入、删除、查询操作实战

1、命名规则

C语言中对变量与函数有两种命名规则:

1、下划线命名法

无论函数名还是变量名,每个单词都是全小写,且单词之间用下划线_连接,例如:list_insert

2、大/小驼峰命名法

函数名命名用大驼峰命名法,即:每个单词首字母大写,其余小写,且单词之间直接相连。

变量名命名用小驼峰命名法,即:除了首个单词,每个单词首字母大写,其余小写,且单词之间直接相连。


2、顺序表插入

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


bool ListInsert(SqList &list, int i, ElemType n)
{
    //判断需要插入的位置是否合法
    if(i < 1 || i > list.length + 1)
    {
        return false;
    }

    //判断顺序表是否已满
    if(list.length == MaxSize)
    {
        return false;
    }

    //插入元素操作
    //其实质就是将元素逐个往后移动,将需要插入的位置空出来,再插入元素
    for(int j = list.length; j >= i; j--)
    {
        list.data[j] = list.data[j-1];
    }
    list.data[i-1] = n;

    //更新顺序表元素个数
    list.length++;

    return true;
}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    bool ret =  ListInsert(list, 4, 3);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < list.length; i++)
        {
            printf("%3d", list.data[i]);
        }
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

C语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


int ListInsert(SqList *pList, int i, ElemType n)
{
    //判断需要插入的位置是否合法
    if(i < 1 || i > pList->length + 1)
    {
        return 0;
    }

    //判断顺序表是否已满
    if(pList->length == MaxSize)
    {
        return 0;
    }

    //插入元素操作
    //其实质就是将元素逐个往后移动,将需要插入的位置空出来,再插入元素
    for(int j = pList->length; j >= i; j--)
    {
        pList->data[j] = pList->data[j-1];
    }
    pList->data[i-1] = n;

    //更新顺序表元素个数
    pList->length++;

    return 1;
}


int main()
{
    SqList *pList;

    //初始化顺序表
    pList->data[0] = 0;
    pList->data[1] = 1;
    pList->data[2] = 2;

    //更新顺序表元素个数
    pList->length = 3;

    int ret =  ListInsert(pList, 4, 3);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < pList->length; i++)
        {
            printf("%3d", pList->data[i]);
        }
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

3、顺序表删除

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


bool ListDelete(SqList &list, int i, ElemType &del)
{
    //判断元素位置i是否合法
    if(i < 1 || i > list.length)
    {
        return false;
    }

    del = list.data[i];

    for(int j = i; j < list.length; j++)
    {
        list.data[j-1] = list.data[j];
    }

    //更新顺序表中的元素个数
    list.length--;

    return true;

}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    //定义一个变量去保存被删除的元素
    ElemType del;

    bool ret =  ListDelete(list, 2, del);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < list.length; i++)
        {
            printf("%3d", list.data[i]);
        }

        printf("\n%3d\n", del);
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

4、顺序表查找

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


int LocateElement(SqList list, ElemType element)
{
    int i;
    for(i = 0; i < list.length; i++)
    {
        if(list.data[i] == element)
        {
            return i+1;
        }
    }

    return 0;
}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    //定义一个变量去保存被删除的元素
    ElemType del;

    int ret =  LocateElement(list, 1);

    if(ret)
    {
        printf("success\n");

        printf("%d\n", ret);
    }
    else
    {
        printf("false\n");
    }


    return 0;
}
相关推荐
im长街9 分钟前
Ubuntu22.04 - brpc的安装和使用
学习
知识分享小能手14 分钟前
Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)
开发语言·前端·javascript·学习·前端框架·html·html5
楼台的春风1 小时前
【STM32 基于PID的闭环电机控制系统】
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·算法
free-elcmacom1 小时前
C语言番外篇(3)------------>break、continue
c语言·开发语言
你可以叫我仔哥呀2 小时前
k8s学习记录:环境搭建(基于Kubeadmin)
学习·容器·kubernetes
二进制怪兽2 小时前
[笔记] x86汇编语言:从实模式到保护模式之第四章 汇编语言和汇编软件
汇编·笔记
试试看1682 小时前
自制操作系统前置知识汇编学习
汇编·学习
EnigmaCoder2 小时前
单链表:数据结构中的灵活“链条”
c语言·数据结构·学习
南宫生3 小时前
力扣每日一题【算法学习day.130】
java·学习·算法·leetcode
Ronin-Lotus3 小时前
程序代码篇---C/C++中的变量存储位置
c语言·c++···静态区·文字常量区·变量存储位置