服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C/C++实现线性顺序表的示例代码

C/C++实现线性顺序表的示例代码

2022-12-12 12:03学编程的闹钟 C/C++

使用顺序存储结构的线性存储结构的表为线性顺序表。本文将分别利用C语言和C++实现线性顺序表,文中示例代码讲解详细,需要的可以参考一下

线性顺序表简介

使用顺序存储结构的线性存储结构的表为线性顺序表,线性存储结构是元素逻辑结构一对一,顺序存储结构是元素物理结构连续,线性顺序表操作没有限制,线性顺序表优点是可以使用下标获取和修改元素,线性顺序表缺点是不可以直接插入和删除元素.

C语言实现代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<stdio.h>//包含标准输入输出文件
#include<stdlib.h>//包含标准库文件
typedef struct//定义类型定义结构体
{
    int*Array,Length;//定义整数指针变量数组,定义整数变量长度
}Sequential_List;//定义顺序表
Sequential_List Sequential_List_Create(void)//顺序表创造
{
    return(Sequential_List){malloc(0)};//返回顺序表数组赋值为分配0字节返回值并且退出函数
}
void Sequential_List_Destroy(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/)//顺序表销毁
{
    free(sequential_list->Array);//释放顺序表数组
}
void Sequential_List_Insert(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/,int Insert_Index/*定义整数变量插入索引*/,int Insert_Element/*定义整数变量插入元素*/)//顺序表插入
{
    sequential_list->Array=realloc(sequential_list->Array,++sequential_list->Length*sizeof(int));//顺序表数组赋值为重新分配顺序表长度累加1乘整数字节返回值
    for(int Index=sequential_list->Length;Index>Insert_Index;--Index)//定义整数变量索引赋值为顺序表长度,索引大于插入索引,索引累减1
        sequential_list->Array[Index]=sequential_list->Array[Index-1];//顺序表数组第索引个元素赋值为顺序表数组第索引减1个元素
    sequential_list->Array[Insert_Index]=Insert_Element;//顺序表数组第插入索引个元素赋值为插入元素
}
void Sequential_List_Delete(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/,int Delete_Index/*定义整数变量删除索引*/)//顺序表删除
{
    --sequential_list->Length;//顺序表长度累减1
    for(int Index=Delete_Index;Index<sequential_list->Length;++Index)//定义整数变量索引赋值为删除索引,索引小于顺序表长度,索引累加1
        sequential_list->Array[Index]=sequential_list->Array[Index+1];//顺序表数组第索引个元素赋值为顺序表数组第索引加1个元素
}
int Sequential_List_Obtain(Sequential_List sequential_list/*定义顺序表变量顺序表*/,int Obtain_Index/*定义整数变量获取索引*/)//顺序表获取
{
    return sequential_list.Array[Obtain_Index];//返回顺序表数组第获取索引个元素并且退出函数
}
int Sequential_List_Obtain_Length(Sequential_List sequential_list/*定义顺序表变量顺序表*/)//顺序表获取长度
{
    return sequential_list.Length;//返回顺序表长度并且退出函数
}
int main(void)//主函数
{
    Sequential_List sequential_list=Sequential_List_Create();//定义顺序表变量顺序表赋值为顺序表创造返回值
    int Select,Element,Index;//定义整数变量选择,定义整数变量元素,定义整数变量索引
    do{
        scanf("%i",&Select);//格式扫描选择
        if(Select==1)//选择等于1
        {
            scanf("%i%i",&Index,&Element);//格式扫描索引和元素
            Sequential_List_Insert(&sequential_list,Index,Element);//顺序表插入第索引个元素为元素
        }
        else if(Select==2)//选择等于2
        {
            scanf("%i",&Index);//格式扫描索引
            Sequential_List_Delete(&sequential_list,Index);//顺序表删除第索引个元素
        }
        else if(Select==3)//选择等于3
        {
            scanf("%i",&Index);//格式扫描索引
            printf("%i",Sequential_List_Obtain(sequential_list,Index));//格式打印顺序表获取第索引个元素返回值
        }
        else if(Select==4)//选择等于4
            printf("%i",Sequential_List_Obtain_Length(sequential_list));//格式打印顺序表获取长度返回值
    }while(Select);//选择不等于0
    Sequential_List_Destroy(&sequential_list);//顺序表销毁
}

C++语言实现代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<iostream>//包含输入输出流文件
template<typename Type/*类型*/>struct Sequential_List//定义模板结构体顺序表
{
    Type*Array=new Type;//定义类型指针变量数组赋值为新类型字节返回值
    int Length=0;//定义整数变量长度赋值为0
    ~Sequential_List(void)//顺序表析构
    {
        delete Array;//删除数组
    }
    void Insert(int Insert_Index/*定义整数变量插入索引*/,Type Insert_Element/*定义类型变量插入元素*/)//插入
    {
        Type*temporary_Array=Array;//定义类型指针变量临时数组赋值为数组
        Array=new Type[++Length];//数组赋值为新长度累加1乘类型字节返回值
        for(int Index=0;Index<Length;++Index)//定义整数变量索引赋值为0,索引小于长度,索引累加1
            Array[Index]=temporary_Array[Index];//数组第索引个元素赋值为临时数组第索引个元素
        delete temporary_Array;//删除临时数组
        for(int Index=Length-1;Index>Insert_Index;--Index)//定义整数变量索引赋值为长度减1,索引大于插入索引,索引累减1
            Array[Index]=Array[Index-1];//数组第索引个元素赋值为数组第索引减1个元素
        Array[Insert_Index]=Insert_Element;//数组第插入索引个元素赋值为插入元素
    }
    void Delete(int Delete_Index/*定义整数变量删除索引*/)//删除
    {
        --Length;//长度累减1
        for(int Index=Delete_Index;Index<Length;++Index)//定义整数变量索引赋值为删除索引,索引小于长度,索引累加1
            Array[Index]=Array[Index+1];//数组第索引个元素赋值为数组第索引加1个元素
    }
    int Obtain(int Obtain_Index/*定义整数变量获取索引*/)//获取
    {
        return Array[Obtain_Index];//返回数组第获取索引个元素并且退出函数
    }
    int Obtain_Length(void)//获取长度
    {
        return Length;//返回长度并且退出函数
    }
};
int main(void)//主函数
{
    Sequential_List<int>sequential_list;//定义顺序表整数变量顺序表
    int Select,Element,Index;//定义整数变量选择,定义整数变量元素,定义整数变量索引
    do{
        std::cin>>Select;//标准输入选择
        if(Select==1)//选择等于1
        {
            std::cin>>Index>>Element;//标准输入索引和元素
            sequential_list.Insert(Index,Element);//顺序表插入第索引个元素为元素
        }
        else if(Select==2)//选择等于2
        {
            std::cin>>Index;//标准输入索引
            sequential_list.Delete(Index);//顺序表删除第索引个元素
        }
        else if(Select==3)//选择等于3
        {
            std::cin>>Index;//标准输入索引
            std::cout<<sequential_list.Obtain(Index);//标准输出顺序表获取第索引个元素返回值
        }
        else if(Select==4)//选择等于4
            std::cout<<sequential_list.Obtain_Length();//标准输出顺序表获取长度返回值
    }while(Select);//选择不等于0
}

到此这篇关于C/C++实现线性顺序表的示例代码的文章就介绍到这了,更多相关C++线性顺序表内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/vbnetcx/article/details/124243705

延伸 · 阅读

精彩推荐
  • C/C++基于C++实现掷双骰游戏的示例代码

    基于C++实现掷双骰游戏的示例代码

    在最流行的博彩游戏中有一种名为“掷双骰”(craps)的骰子游戏,这种游戏在世界各地的娱乐场所和大街小巷非常受欢迎。本文将用C++语言实现这一游戏,需...

    LL的小班5222022-10-24
  • C/C++C语言解决百钱买百鸡问题

    C语言解决百钱买百鸡问题

    本文给大家分享的是一个经典的算法(百元百鸡)的C语言版的解决方法,使用的是比较偷懒的穷举法,有需要的小伙伴可以参考下。...

    C语言教程网12082021-03-25
  • C/C++C语言实现任何文件的加密解密功能

    C语言实现任何文件的加密解密功能

    这篇文章主要为大家详细介绍了C语言实现任何文件的加密解密功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    贝尔拉梅拉热翔4362021-07-25
  • C/C++C语言实现猜数字游戏

    C语言实现猜数字游戏

    这篇文章主要为大家详细介绍了C语言实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    S.K.Cu5402021-08-05
  • C/C++浅理解C++ 人脸识别系统的实现

    浅理解C++ 人脸识别系统的实现

    这篇文章主要介绍了浅理解C++ 人脸识别系统的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    进击的小尧好程序员12082021-08-27
  • C/C++Eclipse中C++连接mysql数据库

    Eclipse中C++连接mysql数据库

    这篇文章主要为大家详细介绍了Eclipse中C++连接mysql数据库 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    tyt叮当tyt6542021-07-31
  • C/C++全局静态存储区、堆区和栈区深入剖析

    全局静态存储区、堆区和栈区深入剖析

    在C++中,内存可分为系统数据区,自由存储区,文本区,const数据区,全局静态区,堆区和栈区...

    C++教程网2182020-11-09
  • C/C++C语言简明讲解三目运算符和逗号表达式的使用

    C语言简明讲解三目运算符和逗号表达式的使用

    三目运算符,又称条件运算符,它是唯一有3个操作数的运算符,有时又称为三元运算符。三目运算符的结合性是右结合的;逗号表达式,是c语言中的逗号...

    清风自在 流水潺潺6342022-11-11