当前位置:首页 » 《随便一记》 » 正文

[C语言][数据结构][动态内存空间的开辟]顺序表的实现!

21 人参与  2024年04月09日 13:07  分类 : 《随便一记》  评论

点击全文阅读


目录

零.必备知识

a.顺序表的底层是数组.

b.数组在内存中是连续存放的.

c.动态内存空间的开辟(malloc,calloc,realloc).

一.顺序表的定义与实现 

        1.1 顺序表的定义 

        1.2 顺序表的初始化 

        1.3 顺序表的销毁 

        1.4 顺序表容量的检查与调整(最关键的部分)

        1.5 顺序表的尾插

        1.6 顺序表的头插 

        1.7 顺序表的尾删

        1.8 顺序表的头删

         1.9 顺序表中在指定位置之前插入数据

        1.10 删除指定位置的数据 

        1.11 顺序表中查找指定数据

二.顺序表源码 

        SeqList.h

        SeqList.c

 


零.必备知识


a.顺序表的底层是数组.

b.数组在内存中是连续存放的.

c.动态内存空间的开辟(malloc,calloc,realloc).

一.顺序表的定义与实现 

注:具体解释都在注释中(在代码中具体分析!)

        1.1 顺序表的定义 

        1.2 顺序表的初始化 

        1.3 顺序表的销毁 

        1.4 顺序表容量的检查与调整(最关键的部分)

 

        1.5 顺序表的尾插

 

        1.6 顺序表的头插 

 

        1.7 顺序表的尾删

 

        1.8 顺序表的头删

 

         1.9 顺序表中在指定位置之前插入数据

 

        1.10 删除指定位置的数据 

 

        1.11 顺序表中查找指定数据

 

二.顺序表源码 

        SeqList.h

#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h> 静态顺序表//struct SeqList//{//int arr[100];//int size;//};// 动态顺序表的定义typedef int DateType; //数据类型typedef struct SeqList{DateType* arr;int size; //数组中的有效元素个数int capacity; //数组的总容量}SL;// 顺序表的初始化void SLInit(SL* psl);// 顺序表的销毁void SLDestroy(SL* psl);// 打印检查void SLprint(SL sl);// 容量检查与调整void CheckCapacity(SL* psl);// 尾插-头插void SLPushBack(SL* psl, DateType x);void SLPushFront(SL* psl, DateType x);// 尾删-头删void SLPopBack(SL* psl);void SLPopFront(SL* psl);// 在指定位置之前插入数据void SLInsert(SL* psl, int pos, DateType x); //pos:点// 删除指定位置的数据void SLErase(SL* psl, int pos);// 顺序表的查找void SLFind(SL psl, DateType x);

        SeqList.c

 

#define  _CRT_SECURE_NO_WARNINGS#include "SeqList.h"// 顺序表的初始化void SLInit(SL* psl){psl->arr = NULL;psl->size = psl->capacity = 0;}// 顺序表的销毁void SLDestroy(SL* psl){if (psl->arr){free(psl->arr); //释放动态开辟的内存空间}psl->arr = NULL;psl->size = psl->capacity = 0;}// 容量检查与调整void CheckCapacity(SL* psl){if (psl->size == psl->capacity) //空间不够了,需要进行扩容{int newCapacity = psl->capacity == 0 ? 4 : psl->capacity * 2; //避免 psl->capacity初始容量为空DateType* temp = (DateType*)realloc(psl->arr, newCapacity * sizeof(DateType));if (temp == NULL) //避免因为realloc调整空间失败,而导致psl->arr中的数据被清除{perror("realloc fail!");exit(1);}psl->capacity = newCapacity;psl->arr = temp;}}// 尾插void SLPushBack(SL* psl, DateType x){CheckCapacity(psl);// 插入psl->arr[psl->size] = x;psl->size++;}// 头插void SLPushFront(SL* psl, DateType x){CheckCapacity(psl);for (int i = psl->size; i > 0; i--){psl->arr[i] = psl->arr[i - 1]; //psl->arr[1] = psl->arr[0]}psl->arr[0] = x;(psl->size)++;}// 尾删void SLPopBack(SL* psl){assert(psl);assert(psl->size); //判断是否为空(psl->size)--;}// 头删void SLPopFront(SL* psl){assert(psl);assert(psl->size); //判断是否为空for (int i = 0; i < psl->size - 1; i++){psl->arr[i] = psl->arr[i + 1]; //psl->arr[psl->size - 1] = psl->arr[psl->size - 2]}(psl->size)--;}// 在指定位置之前插入数据void SLInsert(SL* psl, int pos, DateType x){assert(psl);assert(pos >= 0 && pos <= psl->size);CheckCapacity(psl);for (int i = psl->size; i > pos; i--){psl->arr[i] = psl->arr[i - 1]; //arr[pos + 1] = arr[pos]}psl->arr[pos] = x;psl->size++;}// 删除指定位置的数据void SLErase(SL* psl, int pos){assert(psl);assert(psl->size != 0);assert(pos >= 0 && pos < psl->size);for (int i = pos; i < psl->size - 1; i++){psl->arr[i] = psl->arr[i + 1]; //arr[i - 2] = arr[i - 1]}psl->size--;}// 顺序表的查找void SLFind(SL* psl, DateType x){assert(psl);assert(psl->size != 0);for (int i = 0; i < psl->size; i++){if (psl->arr[i] == x){printf("找到了! 下标是%d\n", i);return;}}printf("找不到!\n");}// 打印void SLprint(SL sl){for (int i = 0; i < sl.size; i++){printf("%d ", sl.arr[i]);}printf("\n");}


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/92746.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1