腥狩频 发表于 2025-12-19 14:00:02

顺序表实现线性结构

顺序表的优点
能够随机储存和访问,能通过数组名(首数据地址)+元素序号(偏移量)直接访问
a能够访问第五个数据,链表需要遍历才可以
缺点
大小确定,扩容不方便
数据改动时需要的操作太多如增删
在这个操作后,需要把后面数据全部改动
typedef struct ArrayList {
        int* date;//指针模拟开数组,
        int size;//实际数据大小
}Array;
Array initArray(){
        Array a;
        a.date = (int*)malloc(sizeof(int) * max);
        if (a.date == NULL) {
                printf("内存分配失败");
                return a;
        }
        a.size = 0;
        return a;
}//初始化

1.确定数据插入是否正确(插入地址是否存在)
在线性数据表中数据只能依次排序,所以要确定数据插入的地方是否是存储在指定范围内
如c
x>0||xsize < max) {                if (x == ar->size)                {                        ar->date = m;                        ar->size++;                }                else {                        for (int i = ar->size; i > x; i--) {                                ar->date = ar->date;//最后一位等于前面一位数据                        }                        ar->date = m;                        ar->size++;                }                return 1;        }        else printf("传入数据超出储存范围");        return 0;}查
1.确认线性表是否为空表
若为空表则输出线性表为空表,
2.确认数据位置
如找到数据则返回数据对应序号
如无则返回-1
int add(Array* ar, int x,int m)
{//ar传入结构体,x数据位置,m数据
        if (ar->size < max) {
                if (x == ar->size)
                {
                        ar->date = m;
                        ar->size++;
                }
                else {
                        for (int i = ar->size; i > x; i--) {
                                ar->date = ar->date;//最后一位等于前面一位数据

                        }
                        ar->date = m;
                        ar->size++;
                }
                return 1;
        }
        else printf("传入数据超出储存范围");
        return 0;
}删
1.确认线性表是否为空表
2.查找相应数据位置,根据查找函数的返回值确认接下来的操作
返回值为-1,则return 0也可以输出未找到该数据
反之则从当前序号开始往后循环进行赋值处理
最后让储存数据个数加一
int find(Array* ar, int k)
{
        for (int i = 0; i < ar->size; i ++ ) {
                if (ar->date == k)return i;
        }
        return -1;
}改
这个操作与删减操作差不多
在查找到相对数据的序号后
让这个序号所对应数据进行更改
int delet(Array* ar, int k)
{
        if (ar->size == 0)return -1;
        //数组里面没有数据
        int i = find(ar, k);
        if (i == -1)return -1;
        //数组里面没找到相应数据
        for (; i < ar->size-1; i++) {
                ar->date = ar->date;

        }
        ar->size--;
        return 0;
      
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

僻嘶 发表于 2025-12-24 13:36:35

收藏一下   不知道什么时候能用到

钱闲华 发表于 2026-1-13 18:16:58

yyds。多谢分享

港髁 发表于 2026-1-14 05:43:46

前排留名,哈哈哈

里豳朝 发表于 2026-1-14 12:02:15

东西不错很实用谢谢分享

姊囝 发表于 2026-1-18 00:45:20

感谢分享,下载保存了,貌似很强大

南宫玉英 发表于 2026-1-23 06:08:24

yyds。多谢分享

墨佳美 发表于 2026-1-23 16:23:59

收藏一下   不知道什么时候能用到

昝梓菱 发表于 2026-1-24 05:30:40

东西不错很实用谢谢分享

愆蟠唉 发表于 2026-1-26 13:41:35

谢谢分享,试用一下

焦尔蕾 发表于 2026-1-27 02:54:54

新版吗?好像是停更了吧。

窟聿湎 发表于 2026-1-28 10:06:05

热心回复!

梳踟希 发表于 2026-1-29 07:47:17

谢谢楼主提供!

骆贵 发表于 2026-2-3 06:34:14

热心回复!

孙淼淼 发表于 2026-2-4 06:14:52

这个好,看起来很实用

鞍汉 发表于 2026-2-4 17:44:22

懂技术并乐意极积无私分享的人越来越少。珍惜

栓州 发表于 2026-2-8 05:01:04

用心讨论,共获提升!

寨重 发表于 2026-2-8 05:20:09

热心回复!

尤晓兰 发表于 2026-2-8 08:16:34

用心讨论,共获提升!

睿哝 发表于 2026-2-9 03:33:28

感谢分享,学习下。
页: [1] 2
查看完整版本: 顺序表实现线性结构